Namensräume
Varianten
Aktionen

C++ Benannte Anforderungen: UnformattedInputFunction

Von cppreference.com
 
 
C++ benannte Anforderungen
 

[bearbeiten] Anforderungen

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

1) Erstellt ein Objekt vom Typ basic_istream::sentry mit automatischer Speicherverwaltung und dem Argument noskipws auf true 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.
  • Leert den verbundenen Ausgabestream (tie()'d), falls zutreffend.
2) Überprüft den Status des Sentry-Objekts durch Aufrufen von sentry::operator bool(), was äquivalent zu basic_ios::good ist.
  • Wenn der Operator false zurückgibt oder der Konstruktor des Sentry-Objekts eine Ausnahme auslöst.
  • Setzt die Anzahl der extrahierten Zeichen (gcount) im Eingabestream auf Null.
  • Wenn die Funktion zum Schreiben in ein Array von CharT aufgerufen wurde, wird CharT() (das Nullzeichen) an die erste Position des Arrays geschrieben.
  • Wenn der Operator true zurückgibt, wird die Eingabe so durchgeführt, als ob rdbuf()->sbumpc() oder rdbuf()->sgetc() aufgerufen würde.
  • Wenn das Ende des Streams erreicht ist (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.
  • Ausnahmen, die von basic_ios::clear ausgelöst werden, werden nicht abgefangen oder erneut ausgelöst.
  • Wenn während der Eingabe keine Ausnahme ausgelöst wurde, wird die Anzahl der extrahierten Zeichen (gcount) im Eingabestream gesetzt.
3) In jedem Fall, ob durch Ausnahme beendet oder durch Rückgabe, wird der Destruktor des Sentry-Objekts aufgerufen, bevor die Funktion verlassen wird.

[bearbeiten] Standardbibliothek

Die folgenden Standardbibliotheksfunktionen sind UnformattedInputFunctions.

[bearbeiten] Defect reports

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 war unklar, ob das Auslösen einer Ausnahme aufgrund des
Setzens von eofbit und/oder failbit zum Setzen von badbit führen würde
Ausnahmen, die von basic_ios::clear ausgelöst werden
nicht abgefangen oder erneut ausgelöst werden
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()
LWG 243 C++98 das Verhalten, wenn sentry::operator bool() false zurückgibt
oder das Sentry-Objekt nicht konstruiert werden konnte, war nicht spezifiziert
spezifiziert