C++ named requirements: UnformattedInputFunction
From cppreference.net
Exigences
Une UnformattedInputFunction est une fonction d'entrée de flux qui effectue les opérations suivantes :
1)
Construit un objet de type
basic_istream::sentry
avec une durée de stockage automatique et avec l'argument
noskipws
défini à
true
, ce qui effectue les opérations suivantes :
-
Si
eofbit
ou
badbit
sont activés sur le flux d'entrée, active également le
failbit
, et si les exceptions sur
failbitsont activées dans le masque d'exceptions de ce flux d'entrée exception mask ( ( exceptions ( ) & failbit ) ! = 0 ), lance ios_base::failure . - Vide le flux de sortie associé (tie()), le cas échéant.
2)
Vérifie l'état de la sentinelle en appelant
sentry::operator bool()
, ce qui équivaut à
basic_ios::good
.
- Si l'opérateur retourne false ou si le constructeur de la sentinelle lève une exception :
-
- Définit le nombre de caractères extraits (gcount) dans le flux d'entrée à zéro.
-
Si la fonction était appelée pour écrire dans un tableau de
CharT, écritCharT()(le caractère nul) à la première position du tableau.
- Si l'opérateur retourne true , effectue l'entrée comme en appelant rdbuf ( ) - > sbumpc ( ) ou rdbuf ( ) - > sgetc ( ) .
-
-
Si la fin du flux est atteinte (l'appel à
rdbuf
(
)
-
>
sbumpc
(
)
ou
rdbuf
(
)
-
>
sgetc
(
)
retourne
Traits
::
eof
(
)
), définit
eofbit. Si les exceptions sureofbitsont activées dans le masque d'exceptions de ce flux ( ( exceptions ( ) & eofbit ) ! = 0 ), lève ios_base::failure . -
Si une exception est levée pendant l'entrée, définit
badbitdans le flux d'entrée. Si les exceptions surbadbitsont activées dans le masque d'exceptions de ce flux ( ( exceptions ( ) & badbit ) ! = 0 ), l'exception est également relancée.
-
- Les exceptions levées par basic_ios::clear ne sont pas interceptées ni relancées.
- Si aucune exception n'a été levée pendant l'entrée, définit le nombre de caractères extraits (gcount) dans le flux d'entrée.
-
Si la fin du flux est atteinte (l'appel à
rdbuf
(
)
-
>
sbumpc
(
)
ou
rdbuf
(
)
-
>
sgetc
(
)
retourne
Traits
::
eof
(
)
), définit
3)
Dans tous les cas, que la terminaison se fasse par exception ou par retour, le destructeur du sentinelle est appelé avant de quitter cette fonction.
Bibliothèque standard
Les fonctions suivantes de la bibliothèque standard sont des UnformattedInputFunction s .
- std::getline , sauf qu'il ne modifie pas gcount.
- basic_istream::operator>> (basic_streambuf*)
- basic_istream::get
- basic_istream::getline
- basic_istream::ignore
- basic_istream::peek
- basic_istream::read
- basic_istream::readsome
-
basic_istream::putback
, sauf qu'il efface d'abord
eofbit -
basic_istream::unget
, sauf qu'il efface d'abord
eofbit - basic_istream::sync , sauf qu'il ne modifie pas gcount
- basic_istream::tellg , sauf qu'il ne modifie pas gcount
-
basic_istream::seekg
, sauf qu'il efface d'abord
eofbitet ne modifie pas gcount - std::ws , sauf qu'il ne modifie pas gcount
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 61 | C++98 |
il n'était pas clair si lever une exception à cause
du réglage de
eofbit
et/ou
failbit
entraînerait le réglage de
badbit
|
les exceptions levées depuis
basic_ios::clear
ne sont pas attrapées ni relancées |
| 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 243 | C++98 |
le comportement lorsque
sentry::operator bool()
retourne
false
ou lorsque la construction de l'objet sentry échoue n'était pas spécifié |
spécifié |