Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Elemzu steuern, deren Zeicheneigenschaften von der Klasse Traitsbestimmt 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, , eofbitund badbit. Testen Sie diese Flags mit good, bad, eofund 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 failureausgelö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 rdstateaufclear. 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:
_Sbgibtrdbufzurück.tiegibt einenNULLZeiger zurück.rdstategibtgoodbitzurück, wenn_Sbes sich um einen Wert ungleich Null handelt; andernfalls wird der Wert zurückgegebenbadbit.exceptionsgibtgoodbitzurück.flagsgibtskipws | deczurück. Weitere Informationen finden Sie unterskipwsunddec.widthgibt 0 zurück.precisiongibt 6 zurück.fillgibt das Leerzeichen zurück.locale::classicgibtgetloczurück.iwordgibt null zurück undpwordgibt einenNULLZeiger 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 pointerElements, das unverändert right ist und auf einen NULL Zeiger *thisfestgelegt 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 coutan die Konsole sichergestellt, dass die Enter a number: Zeichenfolge zur Konsole wechselt, bevor die Nummer selbst extrahiert cinwird. 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