C++ benannte Anforderungen: FormattedInputFunction
Von cppreference.com
< cpp | benannte req
[bearbeiten] Anforderungen
Eine FormattedInputFunction ist eine Stream-Eingabefunktion, die Folgendes durchführt:
- Erstellt ein Objekt vom Typ basic_istream::sentry mit automatischer Speicherlebensdauer und dem Argument
noskipwsauf false gesetzt, was Folgendes bewirkt:
- Wenn eofbit oder badbit im Eingabestream gesetzt sind, wird auch
failbitgesetzt. Wenn Ausnahmen fürfailbitin der Ausnahmemaske dieses Eingabestreams aktiviert sind ((exceptions() & failbit) != 0), wird ios_base::failure ausgelöst. - Spült den verbundenen Ausgabestream, falls zutreffend.
- Wenn das Flag
ios_base::skipwsin diesem Eingabestream gesetzt ist, werden Zeichen aus dem Eingabestream extrahiert und verworfen, bis eine der folgenden Bedingungen zutrifft:
- Das nächste verfügbare Zeichen im Eingabestream ist kein Whitespace-Zeichen, wie es die std::ctype-Facet der aktuell in diesem Eingabestream eingebetteten Locale testet. Das Nicht-Whitespace-Zeichen wird nicht extrahiert.
- Das Ende des Streams wird erreicht, in diesem Fall werden
failbitundeofbitgesetzt. Wenn Ausnahmen für eines dieser Bits aktiviert sind, wird ios_base::failure ausgelöst.
- Wenn eofbit oder badbit im Eingabestream gesetzt sind, wird auch
- Überprüft den Status des sentry durch Aufruf von
sentry::operator bool(), was äquivalent zu basic_ios::good ist. - Wenn der sentry false zurückgibt oder der Konstruktor von sentry eine Ausnahme auslöst, findet keine Eingabe statt.
- Wenn der sentry true zurückgibt, erfolgt die Eingabe so, als ob rdbuf()->sbumpc() oder rdbuf()->sgetc() aufgerufen würde.
- Wenn das Ende des Streams erreicht wird (der Aufruf von rdbuf()->sbumpc() oder rdbuf()->sgetc() gibt Traits::eof() zurück), wird
eofbitgesetzt. Wenn Ausnahmen füreofbitin der Ausnahmemaske dieses Streams aktiviert sind ((exceptions() & eofbit) != 0), wird ios_base::failure ausgelöst. - Wenn während der Eingabe eine Ausnahme ausgelöst wird, wird
badbitim Eingabestream gesetzt. Wenn Ausnahmen fürbadbitin der Ausnahmemaske dieses Streams aktiviert sind ((exceptions() & badbit) != 0), wird die Ausnahme ebenfalls erneut ausgelöst. - Wenn keine Ausnahme ausgelöst wurde, wird *this zurückgegeben.
- Wenn das Ende des Streams erreicht wird (der Aufruf von rdbuf()->sbumpc() oder rdbuf()->sgetc() gibt Traits::eof() zurück), wird
- In jedem Fall, ob durch Ausnahme beendet oder durch Rückgabe, wird der Destruktor des sentry vor dem Verlassen dieser Funktion aufgerufen.
[bearbeiten] Standardbibliothek
Die folgenden Standardbibliotheksfunktionen sind FormattedInputFunctions.
- basic_istream::operator>>(int, long, double, void*, bool)
- operator>>(std::basic_istream, char&)
- operator>>(std::basic_istream, char*)
- operator>>(std::basic_istream, std::bitset)
- operator>>(std::basic_istream, std::string)
-
operator>>, wenn aufgerufen auf den Rückgabewert von std::get_money
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 160 | C++98 | Der Prozess zur Bestimmung, ob die abgefangene Ausnahme erneut ausgelöst wird, erwähnte eine nicht existierende Funktion exception(). |
korrigiert zu exceptions() |