Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: FormattedInputFunction

Von cppreference.com
 
 
C++ benannte Anforderungen
 

[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 noskipws auf false gesetzt, was Folgendes bewirkt:
  • Wenn eofbit oder badbit im Eingabestream gesetzt sind, wird auch failbit gesetzt. Wenn Ausnahmen für failbit in 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::skipws in 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 failbit und eofbit gesetzt. Wenn Ausnahmen für eines dieser Bits aktiviert sind, wird ios_base::failure ausgelöst.
  • Ü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 eofbit gesetzt. Wenn Ausnahmen für eofbit in 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 badbit im Eingabestream gesetzt. Wenn Ausnahmen für badbit in 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.
  • 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.

[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()