Namespaces
Variants

C++ named requirements: UnformattedInputFunction

From cppreference.net
C++ named requirements

Anforderungen

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

1) Konstruiert ein Objekt vom Typ basic_istream::sentry mit automatischer Speicherdauer und mit dem noskipws Argument gesetzt auf true , was folgendes ausführt:
2) Überprüft den Status des Sentry durch Aufruf von sentry::operator bool() , was äquivalent zu basic_ios::good ist.
  • Falls der Operator false zurückgibt oder der Konstruktor des Sentry eine Exception wirft:
  • Setzt die Anzahl extrahierter Zeichen (gcount) im Eingabestrom auf null.
  • Falls die Funktion zum Schreiben in ein Array von CharT aufgerufen wurde, schreibt CharT() (das Nullzeichen) an die erste Position des Arrays.
  • Falls der Operator true zurückgibt, führt die Eingabe durch, als ob rdbuf ( ) - > sbumpc ( ) oder rdbuf ( ) - > sgetc ( ) aufgerufen würde.
  • Falls das Ende des Stroms erreicht wird (der Aufruf von rdbuf ( ) - > sbumpc ( ) oder rdbuf ( ) - > sgetc ( ) gibt Traits :: eof ( ) zurück), setzt eofbit . Falls Exceptions für eofbit in der Exception-Maske dieses Stroms aktiviert sind ( ( exceptions ( ) & eofbit ) ! = 0 ), wirft ios_base::failure .
  • Falls während der Eingabe eine Exception geworfen wird, setzt badbit im Eingabestrom. Falls Exceptions für badbit in der Exception-Maske dieses Stroms aktiviert sind ( ( exceptions ( ) & badbit ) ! = 0 ), wird die Exception ebenfalls erneut geworfen.
  • Falls während der Eingabe keine Exception geworfen wurde, setzt die Anzahl extrahierter Zeichen (gcount) im Eingabestrom.
3) In jedem Fall, ob durch Exception beendet oder durch Rückkehr, wird der Destruktor des Sentry aufgerufen, bevor diese Funktion verlassen wird.

Standardbibliothek

Die folgenden Standardbibliotheksfunktionen sind UnformattedInputFunction 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 61 C++98 Es war unklar, ob das Werfen einer Exception aufgrund
des Setzens von eofbit und/oder failbit zum Setzen von badbit führt
Exceptions, die von basic_ios::clear
geworfen werden, werden nicht abgefangen oder erneut geworfen
LWG 160 C++98 Der Prozess zur Bestimmung, ob die abgefangene Exception
erneut geworfen wird, erwähnte eine nicht existierende Funktion exception()
Korrigiert zu exceptions()
LWG 243 C++98 Das Verhalten, wenn sentry::operator bool() false
zurückgibt oder das Sentry-Objekt nicht konstruiert werden kann, war nicht spezifiziert
Spezifiziert