Namespaces
Variants

C++ named requirements: FormattedInputFunction

From cppreference.net
C++ named requirements

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 noskipws establecido 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 para failbit está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::skipws está 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 failbit y eofbit y si el flujo tiene activadas las excepciones para uno de estos bits, se lanza ios_base::failure .
  • 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 en eofbit está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 badbit en el flujo de entrada. Si las excepciones en badbit está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 .
  • 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 .

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()