Teilen über


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 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 >.

  • Formatierungsinformationen.

  • 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:

  • _Sb gibt rdbuf zurück.

  • tie gibt einen NULL Zeiger zurück.

  • rdstate gibt goodbit zurück, wenn _Sb es sich um einen Wert ungleich Null handelt; andernfalls wird der Wert zurückgegeben badbit.

  • exceptions gibt goodbit zurück.

  • flags gibt skipws | dec zurück. Weitere Informationen finden Sie unter skipws und dec.

  • width gibt 0 zurück.

  • precision gibt 6 zurück.

  • fill gibt das Leerzeichen zurück.

  • locale::classic gibt getloc zurück.

  • iword gibt null zurück und pword gibt einen NULL 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 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