basic_ios
Kelas
Templat kelas menjelaskan fungsi penyimpanan dan anggota yang umum untuk aliran input (templat basic_istream
kelas ) dan aliran output (templat basic_ostream
kelas ) yang bergantung pada parameter templat. (Kelas ios_base
menjelaskan apa yang umum dan tidak bergantung pada parameter templat.) Objek kelas basic_ios<class Elem, class Traits>
membantu mengontrol aliran dengan elemen jenis Elem
, yang sifat karakternya ditentukan oleh kelas Traits
.
Sintaks
template <class Elem, class Traits>
class basic_ios : public ios_base
Parameter
Elem
Jenis karakter.
Traits
Jenis yang menyediakan informasi tentang jenis karakter, default ke char_traits < Elem >
.
Keterangan
Objek penyimpanan kelas basic_ios<class Elem, class Traits>
:
Penunjuk ikatan ke objek jenis
basic_istream<Elem, Traits>
.Penunjuk buffer aliran ke objek jenis
basic_streambuf<Elem, Traits >
.Mengalirkan informasi status dalam objek dasar jenis
ios_base
.Karakter isian dalam objek jenis
char_type
.
Untuk informasi lebih lanjut, lihat basic_istream
dan basic_streambuf
.
Konstruktor
Konstruktor | Deskripsi |
---|---|
basic_ios |
Membangun basic_ios kelas. |
Typedefs
Nama jenis | Deskripsi |
---|---|
char_type |
Sinonim untuk parameter Elem templat . |
int_type |
Sinonim untuk Traits::int_type . |
off_type |
Sinonim untuk Traits::off_type . |
pos_type |
Sinonim untuk Traits::pos_type . |
traits_type |
Sinonim untuk parameter Traits templat . |
Fungsi anggota
Fungsi anggota | Deskripsi |
---|---|
bad |
Menunjukkan hilangnya integritas buffer aliran. |
clear |
Menghapus semua bendera kesalahan. |
copyfmt |
Menyalin bendera dari satu aliran ke aliran lainnya. |
eof |
Menunjukkan apakah akhir aliran telah tercapai. |
exceptions |
Menunjukkan pengecualian mana yang akan dilemparkan oleh aliran. |
fail |
Menunjukkan kegagalan untuk mengekstrak bidang yang valid dari aliran. |
fill |
Menentukan atau mengembalikan karakter yang akan digunakan saat teks tidak selebar aliran. |
good |
Menunjukkan aliran dalam kondisi baik. |
imbue |
Mengubah lokal. |
init |
Dipanggil oleh basic_ios konstruktor. |
move |
Memindahkan semua nilai, kecuali penunjuk ke buffer aliran, dari parameter ke objek saat ini. |
narrow |
Menemukan karakter yang setara dengan karakter tertentu char_type . |
rdbuf |
Merutekan aliran ke buffer tertentu. |
rdstate |
Membaca status bit untuk bendera. |
set_rdbuf |
Menetapkan buffer aliran untuk menjadi buffer baca untuk objek aliran ini. |
setstate |
Mengatur bendera tambahan. |
swap |
Menukar nilai dalam objek ini basic_ios dengan objek lain basic_ios . Penunjuk ke buffer streaming tidak ditukar. |
tie |
Memastikan bahwa satu aliran diproses sebelum aliran lain. |
widen |
Menemukan yang setara char_type dengan karakter tertentu. |
Operators
Operator | Deskripsi |
---|---|
explicit operator bool |
Memungkinkan penggunaan basic_ios objek sebagai bool . Konversi jenis otomatis dinonaktifkan untuk mencegah efek samping umum yang tidak diinginkan. |
operator void * |
Menunjukkan apakah aliran masih bagus. |
operator! |
Menunjukkan apakah aliran tidak buruk. |
Persyaratan
Header:<ios>
Ruang nama:std
basic_ios::bad
Menunjukkan hilangnya integritas buffer aliran
bool bad() const;
Tampilkan Nilai
true
jika rdstate & badbit
bukan nol; jika tidak false
.
Untuk informasi selengkapnya tentang badbit
, lihat ios_base::iostate
.
Contoh
// basic_ios_bad.cpp
// compile with: /EHsc
#include <iostream>
int main( void )
{
using namespace std;
bool b = cout.bad( );
cout << boolalpha;
cout << b << endl;
b = cout.good( );
cout << b << endl;
}
basic_ios::basic_ios
Membangun basic_ios
kelas.
explicit basic_ios(basic_streambuf<Elem, Traits>* sb);
basic_ios();
Parameter
sb
Buffer standar untuk menyimpan elemen input atau output.
Keterangan
Konstruktor pertama menginisialisasi objek anggotanya dengan memanggil init(_ Sb)
. Konstruktor kedua (dilindungi) membuat objek anggotanya tidak diinisialisasi. Panggilan selanjutnya untuk init
harus menginisialisasi objek sebelum dapat dihancurkan dengan aman.
basic_ios::char_type
Sinonim untuk parameter Elem
templat .
typedef Elem char_type;
basic_ios::clear
Menghapus semua bendera kesalahan.
void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);
Parameter
state
(Opsional) Bendera yang ingin Anda atur setelah menghapus semua bendera. Default ke goodbit
.
reraise
(Opsional) Menentukan apakah pengecualian harus dinaikkan kembali. Default ke false
(tidak akan menaikkan kembali pengecualian).
Keterangan
Benderanya adalah goodbit
, , failbit
eofbit
, dan badbit
. Uji bendera ini dengan good
, bad
, eof
, dan fail
Fungsi anggota menggantikan informasi status aliran tersimpan dengan:
state | (rdbuf != 0 goodbit : badbit)
Jika state&exceptions
bukan nol, itu kemudian melempar objek kelas failure
.
Untuk informasi lebih lanjut, lihat rdbuf
dan exceptions
.
Contoh
Lihat rdstate
dan getline
untuk contoh menggunakan clear
.
basic_ios::copyfmt
Menyalin bendera dari satu aliran ke aliran lainnya.
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);
Parameter
right
Aliran yang benderanya ingin Anda salin.
Tampilkan Nilai
Objek this
untuk aliran tempat Anda menyalin bendera.
Keterangan
Fungsi anggota melaporkan peristiwa erase_event
panggilan balik . Kemudian menyalin dari right
ke dalam *this
karakter isian, penunjuk dasi, dan informasi pemformatan. Sebelum mengubah masker pengecualian, ia melaporkan peristiwa copyfmt_event
panggilan balik . Jika setelah salinan selesai, state&exceptions
bukan nol, fungsi secara efektif memanggil clear
dengan argumen rdstate
. Hal ini mengembalikan *this
.
Contoh
// basic_ios_copyfmt.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ofstream x( "test.txt" );
int i = 10;
x << showpos;
cout << i << endl;
cout.copyfmt( x );
cout << i << endl;
}
basic_ios::eof
Menunjukkan apakah akhir aliran telah tercapai.
bool eof() const;
Tampilkan Nilai
true
jika akhir aliran telah tercapai, false
jika tidak.
Keterangan
Fungsi anggota mengembalikan true
jika rdstate
& eofbit
bukan nol. Untuk informasi selengkapnya tentang eofbit
, lihat ios_base::iostate
.
Contoh
// basic_ios_eof.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
int main( int argc, char* argv[] )
{
fstream fs;
int n = 1;
fs.open( "basic_ios_eof.txt" ); // an empty file
cout << boolalpha
cout << fs.eof() << endl;
fs >> n; // Read the char in the file
cout << fs.eof() << endl;
}
basic_ios::exceptions
Menunjukkan pengecualian mana yang akan dilemparkan oleh aliran.
iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);
Parameter
Newexcept
Bendera yang ingin Anda berikan pengecualian.
Tampilkan Nilai
Bendera yang saat ini ditentukan untuk melemparkan pengecualian untuk aliran.
Keterangan
Fungsi anggota pertama mengembalikan masker pengecualian yang disimpan. Fungsi anggota kedua disimpan _Except
dalam masker pengecualian dan mengembalikan nilai tersimpan sebelumnya. Menyimpan masker pengecualian baru dapat melemparkan pengecualian seperti panggilan clear
( rdstate
).
Contoh
// basic_ios_exceptions.cpp
// compile with: /EHsc /GR
#include <iostream>
int main( )
{
using namespace std;
cout << cout.exceptions( ) << endl;
cout.exceptions( ios::eofbit );
cout << cout.exceptions( ) << endl;
try
{
cout.clear( ios::eofbit ); // Force eofbit on
}
catch ( exception &e )
{
cout.clear( );
cout << "Caught the exception." << endl;
cout << "Exception class: " << typeid(e).name() << endl;
cout << "Exception description: " << e.what() << endl;
}
}
0
1
Caught the exception.
Exception class: class std::ios_base::failure
Exception description: ios_base::eofbit set
basic_ios::fail
Menunjukkan kegagalan untuk mengekstrak bidang yang valid dari aliran.
bool fail() const;
Tampilkan Nilai
true
jika rdstate & (badbit|failbit)
bukan nol, jika tidak false
.
Untuk informasi selengkapnya tentang failbit
, lihat ios_base::iostate
.
Contoh
// basic_ios_fail.cpp
// compile with: /EHsc
#include <iostream>
int main( void )
{
using namespace std;
bool b = cout.fail( );
cout << boolalpha;
cout << b << endl;
}
basic_ios::fill
Menentukan atau mengembalikan karakter yang akan digunakan saat teks tidak selebar aliran.
char_type fill() const;
char_type fill(char_type Char);
Parameter
Char
Karakter yang Anda inginkan sebagai karakter isian.
Tampilkan Nilai
Karakter isian saat ini.
Keterangan
Fungsi anggota pertama mengembalikan karakter isian tersimpan. Fungsi anggota kedua disimpan Char
dalam karakter isian dan mengembalikan nilai tersimpan sebelumnya.
Contoh
// basic_ios_fill.cpp
// compile with: /EHsc
#include <iostream>
#include <iomanip>
int main( )
{
using namespace std;
cout << setw( 5 ) << 'a' << endl;
cout.fill( 'x' );
cout << setw( 5 ) << 'a' << endl;
cout << cout.fill( ) << endl;
}
a
xxxxa
x
basic_ios::good
Menunjukkan aliran dalam kondisi baik.
bool good() const;
Tampilkan Nilai
true
jika rdstate == goodbit
(tidak ada bendera status yang diatur), jika tidak, false
.
Untuk informasi selengkapnya tentang goodbit
, lihat ios_base::iostate
.
Contoh
Lihat basic_ios::bad
contoh penggunaan good
.
basic_ios::imbue
Mengubah lokal.
locale imbue(const locale& Loc);
Parameter
Loc
String lokal.
Tampilkan Nilai
Lokal sebelumnya.
Keterangan
Jika rdbuf
bukan penunjuk NULL
, fungsi anggota memanggil
rdbuf-> pubimbue(_ Loc)
Bagaimanapun, ia mengembalikan ios_base::imbue(_ Loc)
.
Untuk informasi lebih lanjut, lihat pubimbue
dan ios_base::imbue
.
Contoh
// basic_ios_imbue.cpp
// compile with: /EHsc
#include <iostream>
#include <locale>
int main( )
{
using namespace std;
cout.imbue( locale( "french_france" ) );
double x = 1234567.123456;
cout << x << endl;
}
basic_ios::init
Dipanggil oleh basic_ios
konstruktor.
void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);
Parameter
_Sb
Buffer standar untuk menyimpan elemen input atau output.
_Isstd
Menentukan apakah ini adalah aliran standar.
Keterangan
Fungsi anggota menyimpan nilai di semua objek anggota, sehingga:
rdbuf
menghasilkan_Sb
.tie
mengembalikan pointerNULL
.rdstate
goodbit
mengembalikan jika_Sb
bukan nol; jika tidak, ia mengembalikanbadbit
.exceptions
menghasilkangoodbit
.flags
menghasilkanskipws | dec
. Untuk informasi lebih lanjut, lihatskipws
dandec
.width
mengembalikan 0.precision
mengembalikan 6.fill
mengembalikan karakter spasi.getloc
menghasilkanlocale::classic
.iword
mengembalikan nol, danpword
mengembalikanNULL
penunjuk untuk semua nilai argumen.
basic_ios::int_type
Sinonim untuk traits_type::int_type
.
typedef typename traits_type::int_type int_type;
basic_ios::move
Memindahkan semua nilai, kecuali penunjuk ke buffer aliran, dari parameter ke objek saat ini.
void move(basic_ios&& right);
Parameter
right
Objek ios_base
untuk memindahkan nilai.
Keterangan
Fungsi anggota yang dilindungi memindahkan semua nilai yang disimpan right
ke *this
kecuali yang disimpan stream buffer pointer
, yang tidak berubah dan diatur right
ke NULL
penunjuk di *this
. tie pointer
Disimpan diatur ke NULL
penunjuk di right
.
basic_ios::narrow
Menemukan karakter yang setara dengan karakter tertentu char_type
.
char narrow(char_type Char, char Default = '\0') const;
Parameter
Char
yang char
akan dikonversi.
Default
char
yang ingin Anda kembalikan jika tidak ada yang setara yang ditemukan.
Tampilkan Nilai
Setara dengan char
.char_type
Keterangan
Fungsi anggota mengembalikan use_facet<ctype<E>>(getloc()).narrow(Char, Default)
.
Untuk informasi lebih lanjut, lihat use_facet
dan getloc
.
Contoh
// basic_ios_narrow.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>
int main( )
{
using namespace std;
wchar_t *x = L"test";
char y[10];
cout << x[0] << endl;
wcout << x << endl;
y[0] = wcout.narrow( x[0] );
cout << y[0] << endl;
}
basic_ios::off_type
Sinonim untuk traits_type::off_type
.
typedef typename traits_type::off_type off_type;
basic_ios::operator void *
Menunjukkan apakah aliran masih bagus.
operator void *() const;
Tampilkan Nilai
Operator mengembalikan pointer NULL
hanya jika fail
.
Contoh
// basic_ios_opgood.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << (bool)(&cout != 0) << endl; // Stream is still good
}
1
basic_ios::operator!
Menunjukkan apakah aliran tidak buruk.
bool operator!() const;
Tampilkan Nilai
Mengembalikan yang sama dengan panggilan basic_ios::fail
Contoh
// basic_ios_opbad.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << !cout << endl; // Stream is not bad
}
0
basic_ios::operator bool
Memungkinkan penggunaan basic_ios
objek sebagai bool
. Konversi jenis otomatis dinonaktifkan untuk mencegah efek samping umum yang tidak diinginkan.
explicit operator bool() const;
Keterangan
Mengembalikan true
jika aliran tidak memiliki kesalahan; jika tidak false
.
basic_ios::pos_type
Sinonim untuk traits_type::pos_type
.
typedef typename traits_type::pos_type pos_type;
basic_ios::rdbuf
Merutekan aliran ke buffer tertentu.
basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);
Parameter
_Sb
Aliran.
Keterangan
Fungsi anggota pertama mengembalikan penunjuk buffer aliran tersimpan.
Fungsi anggota kedua disimpan _Sb
di penunjuk buffer aliran tersimpan dan mengembalikan nilai yang disimpan sebelumnya.
Contoh
// basic_ios_rdbuf.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>
int main( )
{
using namespace std;
ofstream file( "rdbuf.txt" );
streambuf *x = cout.rdbuf( file.rdbuf( ) );
cout << "test" << endl; // Goes to file
cout.rdbuf(x);
cout << "test2" << endl;
}
test2
basic_ios::rdstate
Membaca status kesalahan aliran.
iostate rdstate() const;
Tampilkan Nilai
Informasi status aliran tersimpan.
Contoh
// basic_ios_rdstate.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
void TestFlags( ios& x )
{
cout << ( x.rdstate( ) & ios::badbit ) << endl;
cout << ( x.rdstate( ) & ios::failbit ) << endl;
cout << ( x.rdstate( ) & ios::eofbit ) << endl;
cout << endl;
}
int main( )
{
fstream x( "c:\test.txt", ios::out );
x.clear( );
TestFlags( x );
x.clear( ios::badbit | ios::failbit | ios::eofbit );
TestFlags( x );
}
0
0
0
4
2
1
basic_ios::setstate
Mengatur bendera kesalahan aliran yang ditentukan (saat ini mengatur bendera status kesalahan aliran tetap tidak berubah):
bendera | Deskripsi |
---|---|
goodbit |
Tidak ada kesalahan |
badbit |
Kesalahan yang tidak dapat dipulihkan |
failbit |
Operasi I/O gagal, seperti kesalahan pemformatan atau ekstraksi |
eofbit |
Aliran telah mencapai akhir file |
void setstate(iostate _State);
Parameter
_State
Bendera tambahan yang akan diatur.
Keterangan
Fungsi anggota pada dasarnya memanggil clear(_ state | rdstate)
.
Untuk informasi lebih lanjut, lihat clear
dan rdstate
.
Contoh
// basic_ios_setstate.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
using namespace std;
int main( )
{
bool b = cout.bad( );
cout << b << endl; // Good
cout.clear( ios::badbit );
b = cout.bad( );
// cout.clear( );
cout << b << endl; // Is bad, good
b = cout.fail( );
cout << b << endl; // Not failed
cout.setstate( ios::failbit );
b = cout.fail( );
cout.clear( );
cout << b << endl; // Is failed, good
return 0;
}
0
1
basic_ios::set_rdbuf
Menetapkan buffer aliran untuk menjadi buffer baca untuk objek aliran ini.
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)
Parameter
strbuf
Buffer aliran untuk menjadi buffer baca.
Keterangan
Fungsi anggota yang dilindungi disimpan strbuf
di penunjuk buffer aliran. Ini tidak memanggil clear
.
basic_ios::tie
Memastikan bahwa satu aliran diproses sebelum aliran lain.
basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);
Parameter
str
Aliran.
Tampilkan Nilai
Fungsi anggota pertama mengembalikan penunjuk dasi tersimpan. Fungsi anggota kedua disimpan str
di penunjuk dasi dan mengembalikan nilai tersimpan sebelumnya.
Keterangan
tie
menyebabkan dua aliran disinkronkan, sehingga, operasi pada satu aliran terjadi setelah operasi pada aliran lain selesai.
Contoh
Dalam contoh berikut, dengan mengikat cin
ke cout
, dijamin bahwa Enter a number:
string akan masuk ke konsol sebelum angka itu sendiri diekstrak dari cin
. Ini menghilangkan kemungkinan bahwa string "Masukkan angka:" masih duduk di buffer ketika angka dibaca, sehingga kami yakin bahwa pengguna benar-benar memiliki beberapa permintaan untuk merespons. Secara default, cin
dan cout
terikat.
#include <ios>
#include <iostream>
int main( )
{
using namespace std;
int i;
cin.tie( &cout );
cout << "Enter a number:";
cin >> i;
}
basic_ios::traits_type
Sinonim untuk parameter Traits
templat .
typedef Traits traits_type;
basic_ios::widen
Menemukan yang setara char_type
char
dengan .
char_type widen(char Char) const;
Parameter
Char
Karakter yang akan dikonversi.
Tampilkan Nilai
Menemukan yang setara char_type
char
dengan .
Keterangan
Fungsi anggota mengembalikan use_facet<ctype<E>>(getloc).widen(Char)
.
Untuk informasi lebih lanjut, lihat use_facet
dan getloc
.
Contoh
// basic_ios_widen.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>
int main( )
{
using namespace std;
char *z = "Hello";
wchar_t y[2] = {0,0};
cout << z[0] << endl;
y[0] = wcout.widen( z[0] );
wcout << &y[0] << endl;
}
basic_ios::swap
Menukar nilai dalam objek ini basic_ios
dengan objek lain basic_ios
. Namun, penunjuk ke buffer streaming tidak ditukar.
void swap(basic_ios&& right);
Parameter
right
Objek basic_ios
yang digunakan untuk bertukar nilai.
Keterangan
Fungsi anggota yang dilindungi bertukar semua nilai yang disimpan dengan right
*this
kecuali yang disimpan stream buffer pointer
.
Baca juga
Keamanan utas di Pustaka Standar C++
iostream
Pemrograman
iostreams
Konvensi
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk