C++ named requirements: FormattedInputFunction
From cppreference.net
Requisitos
Una FormattedInputFunction es una función de entrada de flujo que realiza lo siguiente:
-
Construye un objeto de tipo
basic_istream::sentry
con duración de almacenamiento automático y con el argumento
noskipwsestablecido en false , que realiza lo siguiente:
-
-
si
eofbit
o
badbit
están activados en el flujo de entrada, establece también el
failbit, y si las excepciones parafailbitestán habilitadas en la máscara de excepciones de este flujo de entrada ( ( exceptions ( ) & failbit ) ! = 0 ), lanza ios_base::failure . - vacía el flujo de salida enlazado (tie()), si es aplicable.
-
si la bandera
ios_base::skipwsestá activada en este flujo de entrada, extrae y descarta caracteres del flujo de entrada hasta que una de las siguientes condiciones se cumpla:
-
- el siguiente carácter disponible en el flujo de entrada no es un carácter de espacio en blanco, según lo comprobado por la faceta std::ctype de la localización actualmente imbucida en este flujo de entrada. El carácter que no es espacio en blanco no se extrae.
-
se alcanza el final del flujo, en cuyo caso se establecen
failbityeofbity si el flujo tiene activadas las excepciones para uno de estos bits, se lanza ios_base::failure .
-
si
eofbit
o
badbit
están activados en el flujo de entrada, establece también el
-
Verifica el estado del centinela llamando a
sentry::operator bool(), que es equivalente a basic_ios::good . - Si el centinela retornó false o el constructor del centinela lanzó una excepción, no se realiza ninguna entrada.
- Si el centinela retornó true , realiza la entrada como si llamara a rdbuf ( ) - > sbumpc ( ) o rdbuf ( ) - > sgetc ( ) .
-
-
si se alcanza el final del flujo (la llamada a
rdbuf
(
)
-
>
sbumpc
(
)
o
rdbuf
(
)
-
>
sgetc
(
)
devuelve
Traits
::
eof
(
)
), establece
eofbit. Si las excepciones eneofbitestán habilitadas en la máscara de excepciones de este flujo ( ( exceptions ( ) & eofbit ) ! = 0 ), lanza ios_base::failure . -
si se lanza una excepción durante la entrada, establece
badbiten el flujo de entrada. Si las excepciones enbadbitestán habilitadas en la máscara de excepciones de este flujo ( ( exceptions ( ) & badbit ) ! = 0 ), la excepción también se relanza. - Si no se lanzó ninguna excepción, devuelve * this .
-
si se alcanza el final del flujo (la llamada a
rdbuf
(
)
-
>
sbumpc
(
)
o
rdbuf
(
)
-
>
sgetc
(
)
devuelve
Traits
::
eof
(
)
), establece
- En cualquier caso, ya sea terminando por excepción o retornando, el destructor del sentry es llamado antes de salir de esta función.
Biblioteca estándar
Las siguientes funciones de la biblioteca estándar son FormattedInputFunction s .
- basic_istream::operator>> (int, long, double, void*, bool)
- operator>> (std::basic_istream, char&)
- operator>> (std::basic_istream, char*)
- operator>> (std::basic_istream, std::bitset)
- operator>> (std::basic_istream, std::string)
-
operator>>, cuando se llama al valor de retorno de std::get_money
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 160 | C++98 |
el proceso de determinar si la excepción capturada
se relanza mencionaba una función inexistente
exception()
|
corregido a exceptions() |