C++ named requirements: FormattedOutputFunction
Contenidos |
Requisitos
Una FormattedOutputFunction es una función miembro de std::basic_ostream o una función no miembro que involucra std::basic_ostream que realiza las siguientes operaciones:
- Construye un objeto sentry de tipo std::basic_ostream::sentry .
- Si bool ( sentry ) es true , intenta realizar la salida deseada insertando los caracteres en el flujo de salida como si llamara a rdbuf ( ) - > sputc ( ) . También se pueden usar otros miembros públicos de std::basic_ostream , pero los miembros virtuales de rdbuf ( ) excepto overflow() , xsputn() y sync() nunca serán llamados.
- Destruye sentry y retorna * this .
Si sentry no se construye correctamente, o bool ( sentry ) es false , no se produce ninguna salida.
Si la salida no pudo generarse, llama a setstate ( std:: ios_base :: failbit ) , lo cual puede lanzar una excepción.
Si se lanza una excepción durante la salida, entonces
std::
ios_base
::
badbit
se establece en el estado de error de
*
this
sin causar que se lance una
std::ios_base::failure
. Si las excepciones en
badbit
están habilitadas en la
máscara de excepciones
de este flujo (es decir,
(
exceptions
(
)
&
badbit
)
!
=
0
), la excepción también se vuelve a lanzar.
Cuando se lanza una excepción desde la función de salida formateada, sentry también se destruye antes de salir de la función.
Relleno
|
Las funciones de salida formateada determinan el relleno de acuerdo con std::num_put::do_put() etapa 3. |
(hasta C++14) |
|
Si una función de salida formateada de un flujo os determina el relleno, lo hace de la siguiente manera.
Dada una secuencia de caracteres
Si ( os. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left es true , los caracteres de relleno se colocan después de la secuencia de caracteres; de lo contrario, se colocan antes de la secuencia de caracteres. |
(desde C++14) |
Biblioteca estándar
Las siguientes funciones de la biblioteca estándar son FormattedOutputFunction s .
- basic_ostream::operator<< (std::basic_ostream&, int / long / double / void* / bool)
- operator<< (std::basic_ostream&, char)
- operator<< (std::basic_ostream&, char*)
- operator<< (std::basic_ostream&, const std::bitset&)
- operator<< (std::basic_ostream&, const std::basic_string&)
-
operator<<, cuando se llama en el valor de retorno de std::put_money
| (desde C++17) |
|
(desde C++23) |
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 vuelve a lanzar mencionaba una función inexistente
exception()
|
corregido a exceptions() |
| LWG 165 | C++98 |
el único miembro virtual permitido para ser
llamado en rdbuf ( ) era
overflow()
|
también permitido
xsputn()
y
sync()
|