basic_ios
Klasa
Szablon klasy opisuje funkcje magazynu i składowych wspólne dla strumieni wejściowych (szablonu basic_istream
klasy ) i strumieni wyjściowych (szablonu basic_ostream
klasy ), które zależą od parametrów szablonu szablonu. (Klasa ios_base
opisuje, co jest wspólne i nie zależy od parametrów szablonu). Obiekt klasy basic_ios<class Elem, class Traits>
pomaga kontrolować strumień za pomocą elementów typu Elem
, których cechy znaków są określane przez klasę Traits
.
Składnia
template <class Elem, class Traits>
class basic_ios : public ios_base
Parametry
Elem
Typ znaku.
Traits
Typ dostarczający informacje o typie znaku, domyślnie ma wartość char_traits < Elem >
.
Uwagi
Obiekt magazynów klas basic_ios<class Elem, class Traits>
:
Wskaźnik tie do obiektu typu
basic_istream<Elem, Traits>
.Wskaźnik buforu strumienia do obiektu typu
basic_streambuf<Elem, Traits >
.Informacje o stanie strumienia w obiekcie podstawowym typu
ios_base
.Znak wypełnienia w obiekcie typu
char_type
.
Aby uzyskać więcej informacji, zobacz tematy basic_istream
oraz basic_streambuf
.
Konstruktory
Konstruktor | opis |
---|---|
basic_ios |
Tworzy klasę basic_ios . |
Typedefs
Nazwa typu | opis |
---|---|
char_type |
Synonim parametru Elem szablonu . |
int_type |
Synonim dla elementu Traits::int_type . |
off_type |
Synonim dla elementu Traits::off_type . |
pos_type |
Synonim dla elementu Traits::pos_type . |
traits_type |
Synonim parametru Traits szablonu . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
bad |
Wskazuje utratę integralności buforu strumienia. |
clear |
Czyści wszystkie flagi błędów. |
copyfmt |
Kopiuje flagi z jednego strumienia do innego. |
eof |
Wskazuje, czy osiągnięto koniec strumienia. |
exceptions |
Wskazuje, które wyjątki zostaną zgłoszone przez strumień. |
fail |
Wskazuje, że nie można wyodrębnić prawidłowego pola ze strumienia. |
fill |
Określa lub zwraca znak, który będzie używany, gdy tekst nie jest tak szeroki, jak strumień. |
good |
Wskazuje, że strumień jest w dobrym stanie. |
imbue |
Zmienia ustawienia regionalne. |
init |
Wywoływane przez basic_ios konstruktory. |
move |
Przenosi wszystkie wartości, z wyjątkiem wskaźnika do buforu strumienia, z parametru do bieżącego obiektu. |
narrow |
Znajduje odpowiedni znak dla danego char_type elementu . |
rdbuf |
Kieruje strumieniem do określonego buforu. |
rdstate |
Odczytuje stan bitów flag. |
set_rdbuf |
Przypisuje bufor strumienia jako bufor odczytu dla tego obiektu strumienia. |
setstate |
Ustawia dodatkowe flagi. |
swap |
Wymienia wartości w tym basic_ios obiekcie dla tych z innego basic_ios obiektu. Wskaźniki do strumienia nie są zamieniane. |
tie |
Gwarantuje, że jeden strumień jest przetwarzany przed innym strumieniem. |
widen |
Znajduje odpowiednik char_type danego znaku. |
Operatory
Operator | opis |
---|---|
explicit operator bool |
Umożliwia użycie basic_ios obiektu jako bool obiektu . Automatyczna konwersja typu jest wyłączona, aby zapobiec typowym, niezamierzonym skutkom ubocznym. |
operator void * |
Wskazuje, czy strumień jest nadal dobry. |
operator! |
Wskazuje, czy strumień nie jest zły. |
Wymagania
Nagłówek: <ios>
Przestrzeń nazw: std
basic_ios::bad
Wskazuje utratę integralności buforu strumienia
bool bad() const;
Wartość zwracana
true
if rdstate & badbit
is nonzero; w przeciwnym razie false
.
Aby uzyskać więcej informacji na temat badbit
programu , zobacz ios_base::iostate
.
Przykład
// 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
Tworzy klasę basic_ios
.
explicit basic_ios(basic_streambuf<Elem, Traits>* sb);
basic_ios();
Parametry
sb
Bufor standardowy do przechowywania elementów wejściowych lub wyjściowych.
Uwagi
Pierwszy konstruktor inicjuje jego obiekty członkowskie, wywołując metodę init(_ Sb)
. Drugi (chroniony) konstruktor pozostawia niezainicjowane obiekty członkowskie. Późniejsze wywołanie metody musi zainicjować init
obiekt, zanim będzie można go bezpiecznie zniszczyć.
basic_ios::char_type
Synonim parametru Elem
szablonu .
typedef Elem char_type;
basic_ios::clear
Czyści wszystkie flagi błędów.
void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);
Parametry
state
(Opcjonalnie) Flagi, które chcesz ustawić po wyczyszczeniu wszystkich flag. Wartość domyślna to goodbit
.
reraise
(Opcjonalnie) Określa, czy wyjątek powinien zostać ponownie zgłoszony. Wartość domyślna to false
(nie spowoduje ponownego wywołania wyjątku).
Uwagi
Flagi to goodbit
, failbit
, eofbit
i badbit
. Testowanie tych flag za pomocą good
poleceń , bad
, eof
i fail
Funkcja składowa zastępuje przechowywane informacje o stanie strumienia:
state | (rdbuf != 0 goodbit : badbit)
Jeśli state&exceptions
element jest niezerowy, zgłasza obiekt klasy failure
.
Aby uzyskać więcej informacji, zobacz tematy rdbuf
oraz exceptions
.
Przykład
Zobacz rdstate
i getline
, aby zapoznać się z przykładami przy użyciu polecenia clear
.
basic_ios::copyfmt
Kopiuje flagi z jednego strumienia do innego.
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);
Parametry
right
Strumień, którego flagi chcesz skopiować.
Wartość zwracana
this
Obiekt strumienia, do którego kopiujesz flagi.
Uwagi
Funkcja składowa zgłasza zdarzenie erase_event
wywołania zwrotnego . Następnie kopiuje z right
do *this
znaku wypełnienia, wskaźnika krawata i informacji o formatowaniu. Przed zmianą maski wyjątku zgłasza zdarzenie copyfmt_event
wywołania zwrotnego . Jeśli po zakończeniu kopiowania funkcja jest niezerowa, state&exceptions
funkcja skutecznie wywołuje clear
argument .rdstate
Zwraca wartość *this
.
Przykład
// 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
Wskazuje, czy osiągnięto koniec strumienia.
bool eof() const;
Wartość zwracana
true
jeśli osiągnięto koniec strumienia, false
w przeciwnym razie.
Uwagi
Funkcja składowa zwraca true
wartość , jeśli rdstate
& eofbit
jest niezerowa. Aby uzyskać więcej informacji na temat eofbit
programu , zobacz ios_base::iostate
.
Przykład
// 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
Wskazuje, które wyjątki zostaną zgłoszone przez strumień.
iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);
Parametry
Newexcept
Flagi, które chcesz zgłosić wyjątek.
Wartość zwracana
Flagi, które są obecnie określone, aby zgłosić wyjątek dla strumienia.
Uwagi
Pierwsza funkcja składowa zwraca przechowywaną maskę wyjątków. Druga funkcja składowa przechowuje _Except
w masce wyjątków i zwraca poprzednią przechowywaną wartość. Zapisanie nowej maski wyjątku może zgłosić wyjątek, podobnie jak wywołanie clear
( rdstate
).
Przykład
// 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
Wskazuje, że nie można wyodrębnić prawidłowego pola ze strumienia.
bool fail() const;
Wartość zwracana
true
jeśli rdstate & (badbit|failbit)
jest nonzero, w przeciwnym razie false
.
Aby uzyskać więcej informacji na temat failbit
programu , zobacz ios_base::iostate
.
Przykład
// 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
Określa lub zwraca znak, który będzie używany, gdy tekst nie jest tak szeroki, jak strumień.
char_type fill() const;
char_type fill(char_type Char);
Parametry
Char
Znak, który ma być znakiem wypełnienia.
Wartość zwracana
Bieżący znak wypełnienia.
Uwagi
Pierwsza funkcja składowa zwraca przechowywany znak wypełnienia. Druga funkcja składowa przechowuje Char
znak wypełnienia i zwraca poprzednią przechowywaną wartość.
Przykład
// 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
Wskazuje, że strumień jest w dobrym stanie.
bool good() const;
Wartość zwracana
true
jeśli rdstate == goodbit
(nie ustawiono flag stanu), w przeciwnym razie false
.
Aby uzyskać więcej informacji na temat goodbit
programu , zobacz ios_base::iostate
.
Przykład
Zobacz basic_ios::bad
przykład użycia elementu good
.
basic_ios::imbue
Zmienia ustawienia regionalne.
locale imbue(const locale& Loc);
Parametry
Loc
Ciąg ustawień regionalnych.
Wartość zwracana
Poprzednie ustawienia regionalne.
Uwagi
Jeśli rdbuf
nie jest wskaźnikiem NULL
, funkcja składowa wywołuje funkcję
rdbuf-> pubimbue(_ Loc)
W każdym razie zwraca wartość ios_base::imbue(_ Loc)
.
Aby uzyskać więcej informacji, zobacz tematy pubimbue
oraz ios_base::imbue
.
Przykład
// 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
Wywoływane przez basic_ios
konstruktory.
void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);
Parametry
_Sb
Bufor standardowy do przechowywania elementów wejściowych lub wyjściowych.
_Isstd
Określa, czy jest to standardowy strumień.
Uwagi
Funkcja składowa przechowuje wartości we wszystkich obiektach członkowskich, tak aby:
rdbuf
zwraca wartość_Sb
.tie
NULL
zwraca wskaźnik.rdstate
metoda zwracagoodbit
wartość , jeśli_Sb
jest niezerowa; w przeciwnym razie zwraca wartośćbadbit
.exceptions
zwraca wartośćgoodbit
.flags
zwraca wartośćskipws | dec
. Aby uzyskać więcej informacji, zobacz tematyskipws
orazdec
.width
zwraca wartość 0.precision
zwraca wartość 6.fill
zwraca znak spacji.getloc
zwraca wartośćlocale::classic
.iword
zwraca zero ipword
zwracaNULL
wskaźnik dla wszystkich wartości argumentów.
basic_ios::int_type
Synonim dla elementu traits_type::int_type
.
typedef typename traits_type::int_type int_type;
basic_ios::move
Przenosi wszystkie wartości, z wyjątkiem wskaźnika do buforu strumienia, z parametru do bieżącego obiektu.
void move(basic_ios&& right);
Parametry
right
ios_base
Obiekt, z który ma przenosić wartości.
Uwagi
Chroniona funkcja składowa przenosi wszystkie wartości przechowywane w right
obiekcie z *this
wyjątkiem przechowywanego stream buffer pointer
elementu , który jest niezmieniony w right
elemencie i ustawiony na wskaźnik w elemencie NULL
*this
. tie pointer
Przechowywany element jest ustawiony na wskaźnik w elemright
NULL
.
basic_ios::narrow
Znajduje odpowiedni znak dla danego char_type
elementu .
char narrow(char_type Char, char Default = '\0') const;
Parametry
Char
Element char
do konwersji.
Default
Element char
, który ma zostać zwrócony, jeśli nie znaleziono odpowiednika.
Wartość zwracana
Odpowiednik char
danego char_type
elementu .
Uwagi
Funkcja składowa zwraca wartość use_facet<ctype<E>>(getloc()).narrow(Char, Default)
.
Aby uzyskać więcej informacji, zobacz tematy use_facet
oraz getloc
.
Przykład
// 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
Synonim dla elementu traits_type::off_type
.
typedef typename traits_type::off_type off_type;
basic_ios::operator void *
Wskazuje, czy strumień jest nadal dobry.
operator void *() const;
Wartość zwracana
Operator zwraca NULL
wskaźnik tylko wtedy, gdy fail
.
Przykład
// 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!
Wskazuje, czy strumień nie jest zły.
bool operator!() const;
Wartość zwracana
Zwraca to samo, co wywołanie basic_ios::fail
Przykład
// 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
Umożliwia użycie basic_ios
obiektu jako bool
obiektu . Automatyczna konwersja typu jest wyłączona, aby zapobiec typowym, niezamierzonym skutkom ubocznym.
explicit operator bool() const;
Uwagi
Zwraca true
wartość , jeśli strumień nie zawiera błędów; w przeciwnym razie false
.
basic_ios::pos_type
Synonim dla elementu traits_type::pos_type
.
typedef typename traits_type::pos_type pos_type;
basic_ios::rdbuf
Kieruje strumieniem do określonego buforu.
basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);
Parametry
_Sb
Strumień.
Uwagi
Pierwsza funkcja składowa zwraca wskaźnik buforu przechowywanego strumienia.
Druga funkcja składowa przechowuje _Sb
w wskaźniku buforu przechowywanego strumienia i zwraca wcześniej przechowywaną wartość.
Przykład
// 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
Odczytuje stan błędu strumienia.
iostate rdstate() const;
Wartość zwracana
Przechowywane informacje o stanie strumienia.
Przykład
// 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
Ustawia flagi błędów określonego strumienia (obecnie ustaw flagi stanu błędu strumienia pozostają niezmienione):
flag | opis |
---|---|
goodbit |
Brak błędów |
badbit |
Błąd nieodwracalny |
failbit |
Operacja we/wy nie powiodła się, na przykład błąd formatowania lub wyodrębniania |
eofbit |
Strumień osiągnął koniec pliku |
void setstate(iostate _State);
Parametry
_State
Dodatkowe flagi do ustawienia.
Uwagi
Funkcja składowa zasadniczo wywołuje funkcję clear(_ state | rdstate)
.
Aby uzyskać więcej informacji, zobacz tematy clear
oraz rdstate
.
Przykład
// 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
Przypisuje bufor strumienia jako bufor odczytu dla tego obiektu strumienia.
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)
Parametry
strbuf
Bufor strumienia, który stanie się buforem odczytu.
Uwagi
Chroniona funkcja składowa przechowuje strbuf
w wskaźniku buforu strumienia. Nie wywołuje metody clear
.
basic_ios::tie
Gwarantuje, że jeden strumień jest przetwarzany przed innym strumieniem.
basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);
Parametry
str
Strumień.
Wartość zwracana
Pierwsza funkcja składowa zwraca przechowywany wskaźnik krawata. Druga funkcja składowa przechowuje str
wskaźnik krawata i zwraca poprzednią przechowywaną wartość.
Uwagi
tie
powoduje synchronizację dwóch strumieni, takich jak wykonywanie operacji na jednym strumieniu po zakończeniu operacji na drugim strumieniu.
Przykład
W poniższym przykładzie przez powiązanie cin
cout
z elementem gwarantuje, że Enter a number:
ciąg przejdzie do konsoli, zanim sam numer zostanie wyodrębniony z cin
elementu . Eliminuje to możliwość, że ciąg "Wprowadź liczbę:" nadal znajduje się w buforze, gdy liczba jest odczytywana, dzięki czemu mamy pewność, że użytkownik rzeczywiście ma jakiś monit o udzielenie odpowiedzi. Domyślnie cin
i cout
są powiązane.
#include <ios>
#include <iostream>
int main( )
{
using namespace std;
int i;
cin.tie( &cout );
cout << "Enter a number:";
cin >> i;
}
basic_ios::traits_type
Synonim parametru Traits
szablonu .
typedef Traits traits_type;
basic_ios::widen
Znajduje odpowiednik char_type
danego char
elementu .
char_type widen(char Char) const;
Parametry
Char
Znak do konwersji.
Wartość zwracana
Znajduje odpowiednik char_type
danego char
elementu .
Uwagi
Funkcja składowa zwraca wartość use_facet<ctype<E>>(getloc).widen(Char)
.
Aby uzyskać więcej informacji, zobacz tematy use_facet
oraz getloc
.
Przykład
// 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
Wymienia wartości w tym basic_ios
obiekcie dla tych z innego basic_ios
obiektu. Wskaźniki do strumienia nie są jednak zamieniane.
void swap(basic_ios&& right);
Parametry
right
basic_ios
Obiekt używany do wymiany wartości.
Uwagi
Chroniona funkcja składowa wymienia wszystkie wartości przechowywane w right
obiekcie z *this
wyjątkiem przechowywanego stream buffer pointer
elementu .
Zobacz też
Bezpieczeństwo wątku w standardowej bibliotece C++
iostream
Programowanie
iostreams
Konwencje