C++ named requirements: FormattedOutputFunction
Inhaltsverzeichnis |
Anforderungen
Eine FormattedOutputFunction ist eine Memberfunktion von std::basic_ostream oder eine Nicht-Member-Funktion unter Beteiligung von std::basic_ostream , die die folgenden Operationen ausführt:
- Konstruiert ein Objekt sentry vom Typ std::basic_ostream::sentry .
- Falls bool ( sentry ) true ist, versucht die gewünschte Ausgabe durchzuführen, indem Zeichen in den Ausgabestrom 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.
- Zerstört sentry und gibt * this zurück.
Wenn sentry nicht konstruiert werden kann, oder bool ( sentry ) false ist, erfolgt keine Ausgabe.
Wenn die Ausgabe nicht generiert werden konnte, ruft es setstate ( std:: ios_base :: failbit ) auf, was eine Ausnahme werfen kann.
Wenn während der Ausgabe eine Exception ausgelöst wird, dann wird
std::
ios_base
::
badbit
im Fehlerzustand von
*
this
gesetzt, ohne dass eine
std::ios_base::failure
ausgelöst wird. Wenn Exceptions für
badbit
in der
Exception-Maske
dieses Streams aktiviert sind (d.h.
(
exceptions
(
)
&
badbit
)
!
=
0
), wird die Exception ebenfalls erneut ausgelöst.
Wenn eine Ausnahme von der formatierten Ausgabefunktion geworfen wird, sentry wird ebenfalls zerstört, bevor die Funktion verlassen wird.
Padding
|
Formatierte Ausgabefunktionen bestimmen die Auffüllung gemäß std::num_put::do_put() Stufe 3. |
(bis C++14) |
|
Wenn eine formatierte Ausgabefunktion eines Streams os die Auffüllung bestimmt, geschieht dies wie folgt.
Gegeben eine
Wenn ( os. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left den Wert true hat, werden die Füllzeichen nach der Zeichensequenz platziert; andernfalls werden sie vor der Zeichensequenz platziert. |
(seit C++14) |
Standardbibliothek
Die folgenden Standardbibliotheksfunktionen sind FormattedOutputFunction s .
- basic_ostream::operator<< (std::basic_ostream&, int / long / double / void* / bool)
- operator<< (std::basic_ostream&, char)
- operator<< (std::basic_ostream&, char*)
- operator<< (std::basic_ostream&, const std::bitset&)
- operator<< (std::basic_ostream&, const std::basic_string&)
-
operator<<, wenn auf den Rückgabewert von std::put_money aufgerufen
| (seit C++17) |
|
(seit C++23) |
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() |
| LWG 165 | C++98 |
die einzige virtuelle Memberfunktion, die auf
rdbuf()
aufgerufen werden durfte, war
overflow()
|
erlaubt nun auch
xsputn()
und
sync()
|