Namespaces
Variants

C++ named requirements: FormattedInputFunction

From cppreference.net
C++ named requirements

Anforderungen

Eine FormattedInputFunction ist eine Stream-Eingabefunktion, die Folgendes ausführt:

  • Konstruiert ein Objekt vom Typ basic_istream::sentry mit automatischer Speicherdauer und mit dem noskipws Argument auf false gesetzt, was folgendes ausführt:
  • Wenn eofbit oder badbit im Eingabestrom gesetzt sind, wird ebenfalls failbit gesetzt, und wenn Ausnahmen für failbit in der Exception-Maske dieses Eingabestroms aktiviert sind ( ( exceptions ( ) & failbit ) ! = 0 ), wird ios_base::failure ausgelöst.
  • Leert den mit tie() verknüpften Ausgabestrom, falls zutreffend.
  • Wenn das ios_base::skipws -Flag für diesen Eingabestrom gesetzt ist, extrahiert und verwirft Zeichen aus dem Eingabestrom, bis eine der folgenden Bedingungen erfüllt ist:
  • Das nächste verfügbare Zeichen im Eingabestrom ist kein Leerzeichen, wie durch das std::ctype -Facet der aktuell im Eingabestrom verwendeten Locale geprüft. Das Nicht-Leerzeichen wird nicht extrahiert.
  • Das Ende des Stroms wird erreicht, wobei failbit und eofbit gesetzt werden, und wenn der Strom für Ausnahmen bei einem dieser Bits aktiviert ist, 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.
  • Falls der Sentry false zurückgab oder der Konstruktor des Sentry eine Ausnahme warf, findet keine Eingabe statt.
  • Falls der Sentry true zurückgab, führt die Eingabe durch als ob durch Aufruf von rdbuf ( ) - > sbumpc ( ) oder rdbuf ( ) - > sgetc ( ) .
  • wenn das Ende des Streams erreicht wird (der Aufruf von rdbuf ( ) - > sbumpc ( ) oder rdbuf ( ) - > sgetc ( ) gibt Traits :: eof ( ) zurück), wird eofbit gesetzt. Wenn Exceptions für eofbit in der Exception-Maske dieses Streams aktiviert sind ( ( exceptions ( ) & eofbit ) ! = 0 ), wird ios_base::failure geworfen.
  • wenn während der Eingabe eine Exception geworfen wird, wird badbit im Eingabestream gesetzt. Wenn Exceptions für badbit in der Exception-Maske dieses Streams aktiviert sind ( ( exceptions ( ) & badbit ) ! = 0 ), wird die Exception ebenfalls erneut geworfen.
  • Wenn keine Exception geworfen wurde, gibt * this zurück.
  • In jedem Fall, ob durch Exception oder Rückgabe beendet, wird der Destruktor des Sentry aufgerufen, bevor diese Funktion verlassen wird.

Standardbibliothek

Die folgenden Standardbibliotheksfunktionen sind FormattedInputFunction s .

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 gefangene Exception
erneut geworfen wird, erwähnte eine nicht existierende Funktion exception()
korrigiert zu exceptions()