C++ named requirements: FormattedOutputFunction
Table des matières |
Exigences
Une FormattedOutputFunction est une fonction membre de std::basic_ostream ou une fonction non membre impliquant std::basic_ostream qui effectue les opérations suivantes :
- Construit un objet sentry de type std::basic_ostream::sentry .
- Si bool ( sentry ) est true , tente d'effectuer la sortie souhaitée en insérant les caractères dans le flux de sortie comme en appelant rdbuf ( ) - > sputc ( ) . D'autres membres publics de std::basic_ostream peuvent également être utilisés, mais les membres virtuels de rdbuf ( ) excepté overflow() , xsputn() et sync() ne seront jamais appelés.
- Détruit sentry et retourne * this .
Si sentry ne parvient pas à être construit, ou si bool ( sentry ) est false , aucune sortie n'a lieu.
Si la sortie n'a pas pu être générée, appelle setstate ( std:: ios_base :: failbit ) , ce qui peut lever une exception.
Si une exception est levée pendant la sortie, alors
std::
ios_base
::
badbit
est défini dans l'état d'erreur de
*
this
sans provoquer le lancement d'une
std::ios_base::failure
. Si les exceptions sur
badbit
sont activées dans le
masque d'exceptions
de ce flux (c'est-à-dire,
(
exceptions
(
)
&
badbit
)
!
=
0
), l'exception est également relancée.
Lorsqu'une exception est levée depuis la fonction de sortie formatée, sentry est également détruit avant de quitter la fonction.
Remplissage
|
Les fonctions de sortie formatée déterminent le remplissage conformément à std::num_put::do_put() étape 3. |
(jusqu'en C++14) |
|
Si une fonction de sortie formatée d'un flux os détermine le remplissage, elle procède comme suit.
Étant donné une séquence de caractères
Si ( os. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left est true , les caractères de remplissage sont placés après la séquence de caractères ; sinon, ils sont placés avant la séquence de caractères. |
(depuis C++14) |
Bibliothèque standard
Les fonctions standards suivantes de la bibliothèque sont des 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<<, lorsqu'appelé sur la valeur de retour de std::put_money
| (depuis C++17) |
|
(depuis C++23) |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 160 | C++98 |
le processus de détermination si l'exception attrapée
est relancée mentionnait une fonction inexistante
exception()
|
corrigé en exceptions() |
| LWG 165 | C++98 |
la seule fonction virtuelle autorisée à être
appelée sur rdbuf ( ) était
overflow()
|
également autorisé
xsputn()
et
sync()
|