std::ios_base::iostate
Von cppreference.com
| typedef /*implementationsdefiniert*/ iostate; |
||
| static constexpr iostate goodbit = 0; |
||
| static constexpr iostate badbit = /* implementationsdefiniert */ static constexpr iostate failbit = /* implementationsdefiniert */ |
||
Definiert Zustandsflags für Streams. Es ist ein BitmaskType, die folgenden Konstanten sind definiert
| Konstante | Erklärung |
| goodbit | kein Fehler |
| badbit | irreparabler Stream-Fehler |
| failbit | Ein-/Ausgabeoperation fehlgeschlagen (Formatierungs- oder Extraktionsfehler) |
| eofbit | Die zugeordnete Eingabesequenz hat das Ende der Datei erreicht |
Inhalt |
[bearbeiten] The eofbit
Die eofbit wird durch die folgenden Standardbibliotheksfunktionen gesetzt
- Die Zeichenketten-Eingabefunktion std::getline, wenn sie durch Erreichen des Streamendes abgeschlossen wird, im Gegensatz zum Erreichen des angegebenen abschließenden Zeichens.
- Die numerischen Eingabe-Überladungen von basic_istream::operator>>, wenn das Streamende beim Lesen des nächsten Zeichens erreicht wurde, in Stufe 2 der num_get::get-Verarbeitung. Abhängig vom Parsing-Zustand kann `failbit` gleichzeitig gesetzt werden oder auch nicht: Zum Beispiel setzt int n; istringstream buf("1"); buf >> n; `eofbit`, aber nicht `failbit`: Die Ganzzahl 1 wurde erfolgreich geparst und in `n` gespeichert. Auf der anderen Seite setzt bool b; istringstream buf("tr"); buf >> boolalpha >> b; sowohl `eofbit` als auch `failbit`: Es gab nicht genügend Zeichen, um das Parsen des booleschen Wertes true abzuschließen.
- Die Zeichenextraktions-Überladungen von operator>>std::basic_istream, wenn das Streamende erreicht wird, bevor das (falls vorhanden) Limit für die Anzahl der zu extrahierenden Zeichen erreicht ist.
- Der I/O-Manipulator std::get_time und alle std::time_get Parsing-Funktionen: time_get::get, time_get::get_time, time_get::get_date, etc., wenn das Streamende erreicht wird, bevor das letzte Zeichen für die Verarbeitung des erwarteten Datums-/Zeitwertes verarbeitet wurde.
- Der I/O-Manipulator std::get_money und die Funktion money_get::get, wenn das Streamende erreicht wird, bevor das letzte Zeichen für die Verarbeitung des erwarteten Geldbetrags verarbeitet wurde.
- Der Konstruktor von basic_istream::sentry, der zu Beginn jeder formatierten Eingabefunktion ausgeführt wird: Wenn das `skipws`-Flag nicht unset ist (z.B. durch Ausgabe von std::noskipws), liest und verwirft `sentry` führende Leerzeichen. Wenn während dieser Operation das Ende des Eingabestreams erreicht wird, werden sowohl `eofbit` als auch `failbit` gesetzt und es findet keine Eingabe statt.
- Der I/O-Manipulator std::ws, wenn er das Streamende beim Verbrauchen von Leerzeichen erreicht (aber im Gegensatz zum formatierten Eingabe-Sentry wird in diesem Fall `failbit` nicht gesetzt).
- Die unformatierten Eingabefunktionen basic_istream::read, basic_istream::get, basic_istream::peek, basic_istream::readsome, basic_istream::ignore und basic_istream::getline, wenn sie das Streamende erreichen.
- Die Discard-Eingabefunktion basic_istream::ignore, wenn das Streamende erreicht wird, bevor das angegebene Trennzeichen erreicht wird.
- Die sofortige Eingabefunktion basic_istream::readsome, wenn basic_streambuf::in_avail -1 zurückgibt.
Die folgenden Funktionen löschen `eofbit` als Nebeneffekt
Beachten Sie, dass in fast allen Situationen, wenn `eofbit` gesetzt ist, auch `failbit` gesetzt ist.
[bearbeiten] The failbit
Die failbit wird durch die folgenden Standardbibliotheksfunktionen gesetzt
- Der Konstruktor von basic_istream::sentry, der zu Beginn jeder Eingabefunktion ausgeführt wird, wenn entweder `eofbit` oder `badbit` bereits im Stream gesetzt ist, oder wenn das Streamende beim Verbrauchen von führenden Leerzeichen erreicht wird.
- Der Konstruktor von basic_ostream::sentry, der zu Beginn jeder Ausgabefunktion ausgeführt wird, unter implementierungsdefinierten Bedingungen.
- operator>>(std::basic_string<>), wenn die Funktion keine Zeichen aus dem Eingabestrom extrahiert.
- operator>>(std::complex<>), wenn die Funktion keinen gültigen komplexen Zahl extrahieren kann.
- Die Zeichenarray- und Einzelzeichen-Überladungen von operator>>, wenn sie keine Zeichen extrahieren können.
- Die Streambuf-Überladung von basic_istream::operator>>, wenn das Streambuf-Argument ein Nullzeiger ist oder wenn keine Zeichen in den Streambuf eingefügt wurden.
- Die Streambuf-Überladung von basic_ostream::operator<<, wenn die Funktion keine Zeichen einfügt.
- operator>>(std::bitset<>), wenn die Funktion keine Zeichen aus dem Eingabestrom extrahiert.
- std::getline, wenn die Funktion keine Zeichen extrahiert oder wenn sie basic_string::max_size Zeichen aus dem Eingabestrom extrahiert.
- Die numerischen, Zeiger- und booleschen Eingabe-Überladungen von basic_istream::operator>> (technisch gesehen die Überladungen von num_get::get, die sie aufrufen), wenn die Eingabe nicht als gültiger Wert geparst werden kann oder wenn der geparste Wert nicht in den Zieltyp passt.
- Der Zeit-Eingabe-Manipulator std::get_time (technisch gesehen time_get::get, das er aufruft), wenn die Eingabe nicht eindeutig als Zeitwert gemäß der angegebenen Formatierungszeichenkette geparst werden kann.
- Der Währungs-Eingabe-Manipulator std::get_money (technisch gesehen money_get::get, das er aufruft), wenn die Eingabe nicht eindeutig als Geldbetrag gemäß den Gebietsschema-Regeln geparst werden kann.
- Die Extraktionsoperatoren aller RandomNumberEngines, wenn eine ungültige Eingabe angetroffen wird.
- Die Extraktionsoperatoren aller RandomNumberDistributions, wenn eine ungültige Eingabe angetroffen wird.
- Die unformatierten Eingabefunktionen basic_istream::get, wenn sie keine Zeichen extrahieren können.
- basic_istream::getline, wenn sie keine Zeichen extrahiert, wenn sie den bereitgestellten Puffer füllt, ohne das Trennzeichen zu finden, oder wenn die Größe des bereitgestellten Puffers kleiner als 1 ist.
- basic_istream::read, wenn die End-of-File-Bedingung im Eingabestrom auftritt, bevor alle angeforderten Zeichen extrahiert werden konnten.
- basic_istream::seekg bei Fehler
- basic_ostream::tellp bei Fehler
- Die Konstruktoren von std::basic_fstream, std::basic_ifstream und std::basic_ofstream, die ein Dateinamenargument nehmen, wenn die Datei nicht geöffnet werden kann.
- basic_fstream::open, basic_ifstream::open und basic_ofstream::open, wenn die Datei nicht geöffnet werden kann.
- basic_fstream::close, basic_ifstream::close und basic_ofstream::close, wenn die Datei nicht geschlossen werden kann.
[bearbeiten] The badbit
Die badbit wird durch die folgenden Standardbibliotheksfunktionen gesetzt
- basic_ostream::put, wenn es aus irgendeinem Grund fehlschlägt, ein Zeichen in den Ausgabestrom einzufügen.
- basic_ostream::write, wenn es aus irgendeinem Grund fehlschlägt, ein Zeichen in den Ausgabestrom einzufügen.
- Formatierte Ausgabefunktionen operator<<, std::put_money und std::put_time, wenn sie das Ende des Ausgabestroms erreichen, bevor die Ausgabe abgeschlossen ist.
- basic_ios::init, wenn es aufgerufen wird, um einen Stream mit einem Nullzeiger für `rdbuf()` zu initialisieren.
- basic_istream::putback und basic_istream::unget, wenn sie auf einem Stream mit einem Null-`rdbuf()` aufgerufen werden.
- basic_ostream::operator<<(basic_streambuf*), wenn ein Nullzeiger als Argument übergeben wird.
- basic_istream::putback und basic_istream::unget, wenn rdbuf()->sputbackc() oder rdbuf()->sungetc() traits::eof() zurückgeben.
- basic_istream::sync, basic_ostream::flush und jede Ausgabefunktion auf einem `unitbuf`-Ausgabestrom, wenn rdbuf()->pubsync() -1 zurückgibt.
- Jede Stream-I/O-Funktion, wenn eine Ausnahme von einer Memberfunktion des zugehörigen Stream-Puffers ausgelöst wird (z.B. `sbumpc()`, `xsputn()`, `sgetc()`, `overflow()`, etc.).
- ios_base::iword und ios_base::pword bei Fehler (z.B. Fehler bei der Speicherzuweisung).
[bearbeiten] Example
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] See also
Die folgende Tabelle zeigt die Werte der basic_ios-Zugriffsfunktionen (good(), fail(), etc.) für alle möglichen Kombinationen von ios_base::iostate-Flags
| ios_base::iostate Flags | basic_ios-Zugriffsfunktionen | |||||||
eofbit
|
failbit
|
badbit
|
good() | fail() | bad() | eof() | operator bool | operator! |
| false | false | false | true | false | false | false | true | false |
| false | false | true | false | true | true | false | false | true |
| false | true | false | false | true | false | false | false | true |
| false | true | true | false | true | true | false | false | true |
| true | false | false | false | false | false | true | true | false |
| true | false | true | false | true | true | true | false | true |
| true | true | false | false | true | false | true | false | true |
| true | true | true | false | true | true | true | false | true |
| gibt Zustandsflags zurück (public member function of std::basic_ios<CharT,Traits>) | |
| setzt Zustandsflags (public member function of std::basic_ios<CharT,Traits>) | |
| modifiziert Zustandsflags (public member function of std::basic_ios<CharT,Traits>) |