std:: vprint_unicode (std::ostream)
|
Definido en el encabezado
<ostream>
|
||
|
void
vprint_unicode
(
std::
ostream
&
os,
std:: string_view fmt, std:: format_args args ) ; |
(desde C++23) | |
Formatea args de acuerdo con la cadena de formato fmt , y escribe el resultado al flujo de salida os . Se comporta como FormattedOutputFunction de os , excepto que algunos detalles del reporte de errores difieren .
Realiza las siguientes operaciones en orden:
- Primero, la función construye y verifica el sentry object.
- Inicializa una variable automática como si fuera por std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; .
- Escribe out a os :
-
- Si os se refiere a una terminal que solo es capaz de mostrar Unicode mediante una API nativa de Unicode , vacía el búfer de os y escribe out en la terminal usando la API nativa de Unicode.
-
De lo contrario, inserta la secuencia de caracteres
[out. begin ( ),out. end ( ))en os .
Si la escritura en la terminal o la inserción en os falla, llama a os. setstate ( std:: ios_base :: badbit ) .
|
Después de escribir caracteres en os , establece un punto de control observable . |
(since C++26) |
Si out contiene unidades de código Unicode inválidas cuando se utiliza la API nativa de Unicode, el comportamiento es indefinido.
Contenidos |
Parámetros
| os | - | flujo de salida donde insertar los datos | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
Cada campo de reemplazo tiene el siguiente formato:
1)
campo de reemplazo sin especificación de formato
2)
campo de reemplazo con especificación de formato
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | argumentos a formatear | ||||||||||||||||||||||||||||||||||||||||||||||
Excepciones
- std::bad_alloc en caso de fallo de asignación.
- Propaga cualquier excepción lanzada por cualquier formatter , por ejemplo std::format_error , sin tener en cuenta el valor de os. exceptions ( ) y sin activar ios_base::badbit en el estado de error de os .
- Puede lanzar ios_base::failure causado por os. setstate ( ios_base :: badbit ) que se llama si una inserción en os falla.
Notas
Si invocar la API nativa Unicode requiere transcodificación, las unidades de código inválidas se sustituyen con
U+FFFD
CARÁCTER DE REEMPLAZO (ver "The Unicode Standard - Core Specification",
Capítulo 3.9
).
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | Salida formateada |
__cpp_lib_format
|
202207L
|
(C++23) | Exponer std::basic_format_string |
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 4044 | C++23 |
la API Unicode nativa siempre se utilizaba si la
terminal referida por os puede mostrar Unicode |
solo se utiliza si la terminal solo puede usar
la API Unicode nativa para mostrar Unicode |
Véase también
|
(C++23)
|
genera salida de datos de caracteres usando
representación de argumentos con borrado de tipo
(función) |
|
(C++23)
|
genera
representación formateada
de los argumentos
(plantilla de función) |
|
inserta datos de caracteres o inserta en flujo de valor derecho
(plantilla de función) |
|
|
imprime en
stdout
compatible con Unicode o en un flujo de archivo usando
representación de argumentos con borrado de tipo
(función) |
|
|
(C++20)
|
almacena representación formateada de los argumentos en una nueva cadena
(plantilla de función) |
Enlaces externos
| 1. | Unicode — Wikipedia |
| 2. | The Unicode Standard Version 14.0 — Core Specification |