Requisitos denominados de C++:FormattedInputFunction
De cppreference.com
[editar]Requisitos
Una FormattedInputFunction es una función de flujo de entrada que realiza lo siguiente:
- Construye un objeto de tipo basic_istream::sentry con duración de almacenamiento automática y con el argumento
noskipws
establecido a false, que realiza los siguiente:
- si eofbit o badbit están establecidos en el flujo de entrada, también se establece
failbit
, y, si las excepcionesfailbit
están habilitadas en la máscara de excepciones de este flujo de entrada ((exceptions()& failbit)!=0), lanza la excepción ios_base::failure. - vacía el flujo de salida ligado por tie(), si corresponde.
- si el indicador
ios_base::skipws
está establecido en el flujo de entrada, extrae y descarta caracteres del flujo de entrada hasta que una de las condiciones siguientes sea verdadera:
- el siguiente carácter disponible en el flujo de entrada no es un carácter de espacio en blanco, como se prueba mediante la faceta std::ctype de la configuración regional actualmente imbuida en este flujo de entrada. El carácter que no es un espacio en blanco no se extrae.
- se alcanza el final del flujo, en cuyo caso se establecen
failbit
yeofbit
y, si el flujo está activado por excepciones de uno de esos bits, se lanza la excepción ios_base::failure.
- si eofbit o badbit están establecidos en el flujo de entrada, también se establece
- Comprueba el estado del centinela llamando a
sentry::operator bool()
, que es equivalente a basic_ios::good. - Si el centinela devolvió false o el constructor lanzó una excepción, no se realiza ninguna entrada.
- Si el centinela devolvió true, se realiza la entrada como con una llamada a rdbuf()->sbumpc() o rdbuf()->sgetc().
- si se alcanza el final del flujo (la llamada a rdbuf()->sbumpc() o rdbuf()->sgetc() devuelve Traits::eof()), estabelce
eofbit
. Si la excepcióneofbit
está habilitada en la máscara de excepciones de este flujo ((exceptions()& eofbit)!=0), se lanza la excepción ios_base::failure. - si se lanza una excepción durante la entrada, se establece
badbit
en el flujo de entrada. Si las excepcionesbadbit
están habilitadas en la máscara de excepciones de este flujo ((exceptions()& badbit)!=0), también se vuelve a lanzar la excpeción. - Si no se lanza ninguna excepción, devuelve *this.
- si se alcanza el final del flujo (la llamada a rdbuf()->sbumpc() o rdbuf()->sgetc() devuelve Traits::eof()), estabelce
- En cualquier caso, se termine por excepción o retornando, se llama al destructor del centinela antes de salir de esta función.
[editar]Biblioteca estándar
Las siguientes funciones de la biblioteca estándar son FormattedInputFunction.
- 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 en el valor de retorno de std::get_money
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 160 | C++98 | El proceso de determinar si la excepción capturada se vuelve a lanzar menciona una función inexistente, exception() . | Se corrigió a exceptions(). |