basic_ios-Klasse

Die Klassenvorlage beschreibt die Speicher- und Memberfunktionen, die sowohl Eingabedatenströme (von Klassenvorlagen basic_istream) als auch Ausgabeströme (der Klassenvorlage basic_ostream) aufweisen, die von den Vorlagenparametern abhängig sind. (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 des Typs Elemzu steuern, dessen 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 über den Zeichentyp bereitstellt, standardmäßig auf char_traits < Elem >.

Bemerkungen

Ein Objekt von Klassenspeichern basic_ios<class Elem, class Traits> :

  • Ein Bindepunkt auf ein Objekt des Typs basic_istream<Elem, Traits>.

  • Ein Streampufferzeiger auf ein Objekt des Typs basic_streambuf<Elem, Traits >.

  • Formatierungsinformationen.

  • Streamstatusinformationen in einem Basisobjekt des Typs 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 Stream nicht schlecht ist.

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

Bemerkungen

Der erste Konstruktor initialisiert seine Memberobjekte durch Aufrufen init(_ Sb). Der zweite (geschützte) Konstruktor initialisiert seine Memberobjekte nicht. Ein späterer Aufruf init muss 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. Standardeinstellung ( false wird die Ausnahme nicht erneut ausgelöst).

Bemerkungen

Die Flaggen sind goodbit, , eofbitfailbitund badbit. Testen Sie diese Flags mit good, , eofbadundfail

Die Memberfunktion ersetzt die gespeicherten Informationen zum Streamstatus durch:

state | (rdbuf != 0 goodbit : badbit)

Wenn state&exceptions nicht zero ist, wird dann ein Objekt der Klasse failureausgelöst.

Weitere Informationen finden Sie unter rdbuf und exceptions.

Beispiel

Weitere Beispiele finden Sie rdstate unter clearVerwendung getline von Beispielen.

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 Stream, in den Sie die Flags kopieren.

Bemerkungen

Die Memberfunktion meldet das Rückrufereignis erase_event. Anschließend wird in das Füllzeichen, den Bindepunkt und die Formatierungsinformationen kopiert right*this . Bevor Sie die Ausnahmemaske ändern, meldet sie das Rückrufereignis copyfmt_event. Wenn die Kopie abgeschlossen ist, ist nonzero, state&exceptions 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.

Bemerkungen

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 zurzeit angegeben sind, um eine Ausnahme für den Datenstrom zu auslösen.

Bemerkungen

Die erste Memberfunktion gibt die gespeicherte Ausnahmemaske zurück. Die zweite Memberfunktion speichert _Except im Ausnahmeformat und gibt den vorherigen gespeicherten Wert zurück. Beim Speichern eines neuen Ausnahmeformats kann eine Ausnahme wie der Anruf clear( rdstate ) ausgelöst werden.

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

Bemerkungen

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 (no state flags are set), andernfalls rdstate == goodbitfalse.

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.

Bemerkungen

Wenn rdbuf kein NULL Zeiger ist, 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.

Bemerkungen

Die Memberfunktion speichert Werte in allen Memberobjekten, sodass:

  • _Sb gibt rdbuf zurück.

  • tie gibt einen NULL Zeiger zurück.

  • rdstate gibt zurück goodbit , wenn _Sb es nicht zero ist. Andernfalls wird er zurückgegeben badbit.

  • goodbit gibt exceptions zurück.

  • skipws | dec gibt flags 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.

Bemerkungen

Die geschützte Memberfunktion verschiebt alle werte, die mit right*this Ausnahme des gespeicherten stream buffer pointerElements gespeichert sind, das unverändert ist right und auf einen NULL Zeiger *thisfestgelegt ist. Der gespeicherte tie pointer Zeiger wird auf einen NULL Zeiger in rightfestgelegt.

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.

Bemerkungen

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 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 das 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;

Bemerkungen

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.

Bemerkungen

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 Streamfehlerkennzeichnungen fest (aktuell festgelegte Streamfehlerstatus-Flags bleiben unverändert):

Flag BESCHREIBUNG
goodbit Kein Fehler
badbit Nicht wiederherstellbarer 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.

Bemerkungen

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.

Bemerkungen

Die geschützte Memberfunktion speichert strbuf im Datenstrompufferzeiger. Er ruft nicht auf 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.

Bemerkungen

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 Binden cincoutan die Konsole garantiert, dass die Enter a number: Zeichenfolge zur Konsole wechselt, bevor die Zahl selbst extrahiert cinwird. Dadurch wird die Möglichkeit beseitigt, dass die Zeichenfolge "Zahl eingeben:" immer noch im Puffer sitzt, wenn die Zahl gelesen wird, 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.

Bemerkungen

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

void swap(basic_ios&& right);

Parameter

right
Das basic_ios-Objekt, das zum Austauschen von Werten verwendet wird.

Bemerkungen

Die geschützte Memberfunktion tauscht alle Werte aus, die mit *this in right gespeichert sind, bis auf den gespeicherten Zeiger stream buffer pointer.

Weitere Informationen

Threadsicherheit in der C++-Standardbibliothek
iostream Programmierung
iostreams Konventionen