Namespaces
Variants

C++ named requirements: UnformattedOutputFunction

From cppreference.net
C++ named requirements

Anforderungen

Eine UnformattedOutputFunction ist eine Stream-Ausgabefunktion, die Folgendes ausführt:

1) Konstruiert ein Objekt vom Typ basic_ostream::sentry mit automatischer Speicherdauer, das Folgendes ausführt:
  • Falls eofbit oder badbit im Ausgabestrom gesetzt sind, wird ebenfalls failbit gesetzt, und wenn Exceptions für failbit in der Exception-Maske dieses Ausgabestroms aktiviert sind ( ( exceptions ( ) & failbit ) ! = 0 ), wird ios_base::failure geworfen.
  • Leert den mit tie() verknüpften Ausgabestrom, falls zutreffend.
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, findet keine Ausgabe statt.
  • Falls der Operator true zurückgibt, wird versucht, die gewünschte Ausgabe durchzuführen, indem die Zeichen in den Ausgabestream eingefügt werden, als ob durch Aufruf von rdbuf ( ) - > sputc ( ) . Andere öffentliche Member von std::basic_ostream können ebenfalls verwendet werden, aber virtuelle Member von rdbuf ( ) außer overflow() , xsputn() und sync() werden niemals aufgerufen.
  • Falls während der Ausgabe eine Exception geworfen wird, wird badbit im Ausgabestream gesetzt. Falls Exceptions für badbit in der Exception-Maske dieses Streams aktiviert sind ( ( exceptions ( ) & badbit ) ! = 0 ), wird die Exception ebenfalls erneut geworfen.
  • Falls keine Exception geworfen wurde, wird der von der Funktion spezifizierte Wert zurückgegeben.
3) 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 UnformattedOutputFunction s .

**Hinweis:** Da gemäß den Anweisungen C++-spezifische Begriffe nicht übersetzt werden sollen und der Text innerhalb der ` `-Tags (die als Code-ähnlich behandelt werden) erhalten bleiben muss, gibt es in diesem speziellen Fall keinen zu übersetzenden Text außerhalb der HTML-Tags. Die Liste enthält ausschließlich C++-Methodennamen und -Operatoren, die unverändert bleiben.
(seit C++11)

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 63 C++98 die Ausnahmebehandlungsrichtlinie fehlte hinzugefügt
LWG 160 C++98 der Prozess zur Bestimmung, ob die abgefangene Ausnahme
erneut ausgeworfen wird, bezog sich auf eine nicht existierende Funktion exception()
korrigiert zu exceptions()
LWG 165 C++98 die einzige virtuelle Memberfunktion, die auf
rdbuf() aufgerufen werden durfte, war overflow()
erlaubt nun auch
xsputn() und sync()