basic_ios
-Klasse
Die Klassenvorlage beschreibt die Speicher- und Memberfunktionen, die sowohl für Eingabedatenströme (von Klassenvorlagen basic_istream
) als auch für Ausgabedatenströme (von Klassenvorlagen basic_ostream
) verwendet werden, die von den Vorlagenparametern abhängen. (Die Klasse ios_base
beschreibt, was häufig ist und nicht von Vorlagenparametern abhängig ist.) Ein Objekt der Klasse basic_ios<class Elem, class Traits>
hilft, einen Datenstrom mit Elementen vom Typ Elem
zu steuern, deren Zeicheneigenschaften von der Klasse Traits
bestimmt werden.
Syntax
template <class Elem, class Traits>
class basic_ios : public ios_base
Parameter
Elem
Ein Zeichentyp.
Traits
Ein Typ, der Informationen zum Zeichentyp bereitstellt, ist standardmäßig auf char_traits < Elem >
.
Hinweise
Ein Objekt von Klassenspeichern basic_ios<class Elem, class Traits>
:
Ein Tie-Zeiger auf ein Objekt vom Typ
basic_istream<Elem, Traits>
.Ein Datenstrompufferzeiger auf ein Objekt vom Typ
basic_streambuf<Elem, Traits >
.Streamstatusinformationen in einem Basisobjekt vom Typ
ios_base
.Ein Füllzeichen in einem Objekt des Typs
char_type
.
Weitere Informationen finden Sie unter basic_istream
und basic_streambuf
.
Konstruktoren
Konstruktor | Beschreibung |
---|---|
basic_ios |
Erstellt die basic_ios -Klasse. |
TypeDefs
Typname | Beschreibung |
---|---|
char_type |
Ein Synonym für den Vorlagenparameter Elem . |
int_type |
Ein Synonym für Traits::int_type . |
off_type |
Ein Synonym für Traits::off_type . |
pos_type |
Ein Synonym für Traits::pos_type . |
traits_type |
Ein Synonym für den Vorlagenparameter Traits . |
Memberfunktionen
Memberfunktion | Beschreibung |
---|---|
bad |
Kennzeichnet einen Verlust der Integrität des Streampuffers. |
clear |
Löscht alle Fehlerflags. |
copyfmt |
Kopiert Flags aus einem Stream in einen anderen. |
eof |
Gibt an, dass das Ende eines Streams erreicht wurde. |
exceptions |
Gibt an, welche Ausnahmen vom Datenstrom ausgelöst werden. |
fail |
Kennzeichnet einen Fehler beim Extrahieren eines gültigen Felds aus einem Stream. |
fill |
Gibt das Zeichen an, das verwendet wird, wenn der Text nicht so breit ist wie der Datenstrom. |
good |
Gibt an, dass der Stream in einem guten Zustand ist. |
imbue |
Ändert das Gebietsschema. |
init |
Wird von basic_ios -Konstruktoren aufgerufen. |
move |
Verschiebt alle Werte, mit Ausnahme des Zeigers auf den Streampuffer, aus dem Parameter in das aktuelle Objekt. |
narrow |
Sucht das entsprechende Zeichen zu einem angegebenen char_type . |
rdbuf |
Leitet einen Stream in den angegebenen Puffer weiter. |
rdstate |
Liest den Status der Bits für Flags. |
set_rdbuf |
Weist einen Streampuffer zu, der der Lesepuffer für dieses Streamobjekt sein soll. |
setstate |
Legt zusätzliche Flags fest. |
swap |
Tauscht die Werte in diesem basic_ios -Objekt gegen die Werte eines anderen basic_ios -Objekts aus. Die Zeiger auf die Datenstrompuffer werden nicht getauscht. |
tie |
Stellt sicher, dass ein Stream vor einem anderen Stream verarbeitet wird. |
widen |
Sucht den entsprechenden char_type zu einem angegebenen Zeichen. |
Operatoren
Operator | Beschreibung |
---|---|
explicit operator bool |
Ermöglicht es, ein basic_ios -Objekt als ein bool -Objekt zu verwenden. Die automatische Typkonvertierung wird deaktiviert, um häufig vorkommende unbeabsichtigte Nebeneffekte zu verhindern. |
operator void * |
Gibt an, ob der Stream weiterhin brauchbar ist. |
operator! |
Gibt an, ob der Datenstrom nicht schlecht ist. |
Anforderungen
Header: <ios>
Namespace:std
basic_ios::bad
Kennzeichnet einen Verlust der Integrität des Streampuffers.
bool bad() const;
Rückgabewert
true
, wenn rdstate & badbit
ungleich null ist, andernfalls false
.
Weitere Informationen zu badbit
finden Sie unter ios_base::iostate
.
Beispiel
// 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
Erstellt die basic_ios
-Klasse.
explicit basic_ios(basic_streambuf<Elem, Traits>* sb);
basic_ios();
Parameter
sb
Standardpuffer zum Speichern von Eingabe- oder Ausgabeelementen.
Hinweise
Der erste Konstruktor initialisiert seine Memberobjekte durch Aufrufen init(_ Sb)
. Der zweite (geschützte) Konstruktor initialisiert seine Memberobjekte nicht. Ein späterer Aufruf muss init
das Objekt initialisieren, bevor es sicher zerstört werden kann.
basic_ios::char_type
Ein Synonym für den Vorlagenparameter Elem
.
typedef Elem char_type;
basic_ios::clear
Löscht alle Fehlerflags.
void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);
Parameter
state
(Optional) Die Flags, die Sie nach dem Löschen aller Flags festlegen möchten. Wird standardmäßig auf goodbit
festgelegt.
reraise
(Optional) Gibt an, ob die Ausnahme erneut ausgelöst werden soll. Standardwert ist false
(löst die Ausnahme nicht erneut aus).
Hinweise
Die Kennzeichen sind goodbit
, failbit
, , eofbit
und badbit
. Testen Sie diese Flags mit good
, bad
, eof
und fail
Die Memberfunktion ersetzt die gespeicherten Informationen zum Streamstatus durch:
state | (rdbuf != 0 goodbit : badbit)
Ist state&exceptions
"nonzero" angegeben, wird ein Objekt der Klasse failure
ausgelöst.
Weitere Informationen finden Sie unter rdbuf
und exceptions
.
Beispiel
Beispiele rdstate
für die Verwendung von clear
.getline
basic_ios::copyfmt
Kopiert Flags aus einem Stream in einen anderen.
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);
Parameter
right
Der Stream, dessen Flags Sie kopieren möchten.
Rückgabewert
Das this
Objekt für den Datenstrom, in den Sie die Flags kopieren.
Hinweise
Die Memberfunktion meldet das Rückrufereignis erase_event
. Anschließend wird es in right
*this
das Füllzeichen, den Bindestrichzeiger und die Formatierungsinformationen kopiert. Vor dem Ändern des Ausnahmeformats meldet es das Rückrufereignis copyfmt_event
. Wenn die Kopie abgeschlossen ist, state&exceptions
ist nonzero, ruft die Funktion effektiv mit dem Argument rdstate
aufclear
. Er gibt *this
zurück.
Beispiel
// 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
Gibt an, dass das Ende eines Streams erreicht wurde.
bool eof() const;
Rückgabewert
true
, wenn das Ende eines Streams erreicht wurde; andernfalls false
.
Hinweise
Die Memberfunktion gibt zurück true
, wenn rdstate
& eofbit
es sich nicht um Zero handelt. Weitere Informationen zu eofbit
finden Sie unter ios_base::iostate
.
Beispiel
// 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
Gibt an, welche Ausnahmen vom Datenstrom ausgelöst werden.
iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);
Parameter
Newexcept
Die Flags, die eine Ausnahme auslösen sollen.
Rückgabewert
Die Flags, die derzeit angegeben sind, um eine Ausnahme für den Datenstrom auszuwerfen.
Hinweise
Die erste Memberfunktion gibt die gespeicherte Ausnahmemaske zurück. Die zweite Memberfunktion speichert _Except
im Ausnahmeformat und gibt den vorherigen gespeicherten Wert zurück. Das Speichern eines neuen Ausnahmeformats kann eine Ausnahme wie der Aufruf clear
( rdstate
) auslösen.
Beispiel
// 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
Kennzeichnet einen Fehler beim Extrahieren eines gültigen Felds aus einem Stream.
bool fail() const;
Rückgabewert
true
if rdstate & (badbit|failbit)
is nonzero, otherwise false
.
Weitere Informationen zu failbit
finden Sie unter ios_base::iostate
.
Beispiel
// 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
Gibt das Zeichen an, das verwendet wird, wenn der Text nicht so breit ist wie der Datenstrom.
char_type fill() const;
char_type fill(char_type Char);
Parameter
Char
Das Zeichen, das als das Füllzeichen dienen soll.
Rückgabewert
Das aktuelle Füllzeichen.
Hinweise
Die erste Memberfunktion gibt die gespeicherten Füllzeichen zurück. Die zweite Memberfunktion speichert Char
in den Füllzeichen und gibt den zuletzt gespeicherten Wert zurück.
Beispiel
// 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
Gibt an, dass der Stream in einem guten Zustand ist.
bool good() const;
Rückgabewert
true
if rdstate == goodbit
(no state flags are set), otherwise, false
.
Weitere Informationen zu goodbit
finden Sie unter ios_base::iostate
.
Beispiel
Unter basic_ios::bad
finden Sie ein Beispiel für die Verwendung von good
.
basic_ios::imbue
Ändert das Gebietsschema.
locale imbue(const locale& Loc);
Parameter
Loc
Eine lokale Zeichenfolge.
Rückgabewert
Das vorherige Gebietsschema.
Hinweise
Wenn rdbuf
es sich nicht um einen NULL
Zeiger handelt, ruft die Memberfunktion
rdbuf-> pubimbue(_ Loc)
In jedem Fall gibt sie ios_base::imbue(_ Loc)
zurück.
Weitere Informationen finden Sie unter pubimbue
und ios_base::imbue
.
Beispiel
// 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
Wird von basic_ios
-Konstruktoren aufgerufen.
void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);
Parameter
_Sb
Standardpuffer zum Speichern von Eingabe- oder Ausgabeelementen.
_Isstd
Gibt an, ob es sich um einen Standardstream handelt.
Hinweise
Die Memberfunktion speichert Werte in allen Memberobjekten, sodass:
_Sb
gibtrdbuf
zurück.tie
gibt einenNULL
Zeiger zurück.rdstate
gibtgoodbit
zurück, wenn_Sb
es sich um einen Wert ungleich Null handelt; andernfalls wird der Wert zurückgegebenbadbit
.exceptions
gibtgoodbit
zurück.flags
gibtskipws | dec
zurück. Weitere Informationen finden Sie unterskipws
unddec
.width
gibt 0 zurück.precision
gibt 6 zurück.fill
gibt das Leerzeichen zurück.locale::classic
gibtgetloc
zurück.iword
gibt null zurück undpword
gibt einenNULL
Zeiger für alle Argumentwerte zurück.
basic_ios::int_type
Ein Synonym für traits_type::int_type
.
typedef typename traits_type::int_type int_type;
basic_ios::move
Verschiebt alle Werte, mit Ausnahme des Zeigers auf den Streampuffer, aus dem Parameter in das aktuelle Objekt.
void move(basic_ios&& right);
Parameter
right
Das ios_base
-Objekt, aus dem Werte verschoben werden sollen.
Hinweise
Die geschützte Memberfunktion verschiebt alle in der Datei gespeicherten right
*this
Werte mit Ausnahme des gespeicherten stream buffer pointer
Elements, das unverändert right
ist und auf einen NULL
Zeiger *this
festgelegt ist. Der gespeicherte tie pointer
Bereich wird auf einen NULL
Zeiger in right
.
basic_ios::narrow
Sucht das entsprechende Zeichen zu einem angegebenen char_type
.
char narrow(char_type Char, char Default = '\0') const;
Parameter
Char
Die zu konvertierende char
.
Default
Das char
, das zurückgegeben werden soll, wenn keine Entsprechung gefunden wird.
Rückgabewert
Der entsprechende char
zu einem angegebenen char_type
.
Hinweise
Die Memberfunktion gibt use_facet<ctype<E>>(getloc()).narrow(Char, Default)
zurück.
Weitere Informationen finden Sie unter use_facet
und getloc
.
Beispiel
// 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
Ein Synonym für traits_type::off_type
.
typedef typename traits_type::off_type off_type;
basic_ios::operator void *
Gibt an, ob der Stream weiterhin brauchbar ist.
operator void *() const;
Rückgabewert
Der Operator gibt nur dann einen NULL
Zeiger zurück, wenn fail
.
Beispiel
// 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!
Gibt an, ob der Datenstrom nicht schlecht ist.
bool operator!() const;
Rückgabewert
Gibt denselben Wert wie beim Aufrufen zurück. basic_ios::fail
Beispiel
// 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
Ermöglicht es, ein basic_ios
-Objekt als ein bool
-Objekt zu verwenden. Die automatische Typkonvertierung wird deaktiviert, um häufig vorkommende unbeabsichtigte Nebeneffekte zu verhindern.
explicit operator bool() const;
Hinweise
Gibt zurück true
, wenn der Datenstrom keine Fehler aufweist; andernfalls false
.
basic_ios::pos_type
Ein Synonym für traits_type::pos_type
.
typedef typename traits_type::pos_type pos_type;
basic_ios::rdbuf
Leitet einen Stream in den angegebenen Puffer weiter.
basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);
Parameter
_Sb
Ein Stream.
Hinweise
Die erste Memberfunktion gibt den gespeicherten Streampufferzeiger zurück.
Die zweite Memberfunktion speichert _Sb
im gespeicherten Streampufferzeiger und gibt den vorher gespeicherten Wert zurück.
Beispiel
// 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
Liest den Datenstromfehlerstatus.
iostate rdstate() const;
Rückgabewert
Die gespeicherten Informationen zum Status des Streams.
Beispiel
// 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
Legt die angegebenen Datenstromfehlerkennzeichnungen fest (aktuell festgelegte Datenstromfehlerstatuskennzeichnungen bleiben unverändert):
flag | Beschreibung |
---|---|
goodbit |
Kein Fehler |
badbit |
Nicht behebbarer Fehler |
failbit |
Fehler beim E/A-Vorgang, z. B. formatierungs- oder Extraktionsfehler |
eofbit |
Stream hat das Ende der Datei erreicht. |
void setstate(iostate _State);
Parameter
_State
Zusätzlich festzulegende Flags.
Hinweise
Die Memberfunktion ruft im Wesentlichen auf clear(_ state | rdstate)
.
Weitere Informationen finden Sie unter clear
und rdstate
.
Beispiel
// 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
Weist einen Streampuffer zu, der der Lesepuffer für dieses Streamobjekt sein soll.
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)
Parameter
strbuf
Der Streampuffer, der zum Lesepuffer werden soll.
Hinweise
Die geschützte Memberfunktion speichert strbuf
im Datenstrompufferzeiger. Es wird nicht aufgerufen clear
.
basic_ios::tie
Stellt sicher, dass ein Stream vor einem anderen Stream verarbeitet wird.
basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);
Parameter
str
Ein Stream.
Rückgabewert
Die erste Memberfunktion gibt den gespeicherten tie-Zeiger zurück. Die zweite Memberfunktion speichert str
im tie-Zeiger und gibt den zuletzt gespeicherten Wert zurück.
Hinweise
tie
bewirkt, dass zwei Streams so synchronisiert werden, dass Vorgänge für einen Stream erst stattfinden, wenn sie für den anderen Stream abgeschlossen sind.
Beispiel
Im folgenden Beispiel wird durch Das Binden cin
cout
an die Konsole sichergestellt, dass die Enter a number:
Zeichenfolge zur Konsole wechselt, bevor die Nummer selbst extrahiert cin
wird. Dadurch wird die Möglichkeit beseitigt, dass die Zeichenfolge "Zahl eingeben:" beim Lesen der Zahl noch im Puffer sitzt, sodass wir sicher sind, dass der Benutzer tatsächlich eine Aufforderung zum Antworten hat. Standardmäßig cin
sind sie cout
gebunden.
#include <ios>
#include <iostream>
int main( )
{
using namespace std;
int i;
cin.tie( &cout );
cout << "Enter a number:";
cin >> i;
}
basic_ios::traits_type
Ein Synonym für den Vorlagenparameter Traits
.
typedef Traits traits_type;
basic_ios::widen
Sucht den entsprechenden char_type
zu einem angegebenen char
.
char_type widen(char Char) const;
Parameter
Char
Das zu konvertierende Zeichen.
Rückgabewert
Sucht den entsprechenden char_type
zu einem angegebenen char
.
Hinweise
Die Memberfunktion gibt use_facet<ctype<E>>(getloc).widen(Char)
zurück.
Weitere Informationen finden Sie unter use_facet
und getloc
.
Beispiel
// 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
Tauscht die Werte in diesem basic_ios
-Objekt gegen die Werte eines anderen basic_ios
-Objekts aus. Die Zeiger auf die Datenstrompuffer werden jedoch nicht getauscht.
void swap(basic_ios&& right);
Parameter
right
Das basic_ios
-Objekt, das zum Austauschen von Werten verwendet wird.
Hinweise
Die geschützte Memberfunktion tauscht alle Werte aus, die mit *this
in right
gespeichert sind, bis auf den gespeicherten Zeiger stream buffer pointer
.
Siehe auch
Threadsicherheit in der C++-Standardbibliothek
iostream
Programmieren
iostreams
Konventionen