Namespaces
Variants

C++ named requirements: UnformattedInputFunction

From cppreference.net
C++ named requirements

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 failbit sont 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 , écrit CharT() (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 sur eofbit sont 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 badbit dans le flux d'entrée. Si les exceptions sur badbit sont activées dans le masque d'exceptions de ce flux ( ( exceptions ( ) & badbit ) ! = 0 ), l'exception est également relancée.
  • 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.
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 .

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é