Espacios de nombres
Variantes

Requisitos denominados de C++: UnformattedInputFunction

De cppreference.com
 
 
Requisitos denominados de C++
Números aleatorios
Concurrencia
(C++11)
(C++11)
Rangos
Vista multidimensional
Otros

 

Requisitos

Una FunciónDeEntradaSinFormato es una función de entrada de flujo que hace lo siguiente:

1) Construye un objeto de tipo basic_istream::sentry con duración de almacenamiento automática y con el argumento noskipws establecido a true, que realiza los siguiente:
  • Si están establecidos eofbit o badbit en el flujo de entrada, también establece failbit y, si las excepciones en failbit están habilitadas en la máscara de excepciones de este flujo de entrada ((exceptions() & failbit) != 0), lanza la excepción ios_base::failure.
  • Limpia el flujo de salida tie(), si corresponde.
2) Comprueba el estado del centinela (sentry) llamando a sentry::operator bool(), que es equivalente a basic_ios::good.
  • Si el operador devuelve false o el constructor de sentry lanza una excepción:
  • Establece el número de caracteres extraídos (gcount) en el flujo de entrada en cero.
  • Si se llamó a la función para escribir en un array de CharT, escribe CharT() (el carácter nulo) en la primera ubicación del array.
  • Si el operador devuelve 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()), se establece eofbit. Si las excepciones en eofbit están habilitadas en la máscara de exccepciones de este flujo ((exceptions() & eofbit) != 0), lanza la excepción ios_base::failure.
  • Si se genera una excepción durante la entrada, se establece badbit en el flujo de entrada. Si las excepciones badbit están habilitadas en la máscara de excepciones de este flujo ((exceptions() & badbit) != 0), la excepción también se vuelve a generar.
  • Si no se lanzó ninguna excepción durante la entrada, establece la cantidad de caracteres extraídos (gcount) en el flujo de entrada.
3) En cualquier caso, ya sea terminando por excepción o retornando, se llama al destructor del centinela antes de salir de esta función.

Biblioteca estándar

Las siguientes funciones de la biblioteca estándar son FunciónDeEntradaSinFormato.

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 61 C++98 No estaba claro si lanzar un excepción debido a la configuración de
eofbit y/o failbit resultaba en la configuración de badbit.
Las excepciones lanzadas desde basic_ios::clear
no se capturan ni se vuelven a lanzar.
LWG 160 C++98 El proceso de determinar si la excepción capturada se vuelve
a generar menciona una función inexistente, exception().
Corregido a exceptions().
LWG 243 C++98 No se especificaba el comportamiento cuando sentry::operator bool()
devuelve false o el objeto centinela no se puede construir.
Se especifica.