std:: vprint_unicode, std:: vprint_unicode_buffered
|
Definido en el encabezado
<print>
|
||
|
void
vprint_unicode
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(1) | (desde C++23) |
|
void
vprint_unicode_buffered
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(2) | (desde C++23) |
|
void
vprint_unicode_buffered
(
std::
string_view
fmt,
std::
format_args
args
)
;
|
(3) | (desde C++23) |
Formatea args de acuerdo con la cadena de formato fmt , y escribe el resultado al flujo de salida.
- Bloquea stream .
- Sea out la representación en caracteres de los argumentos de formato proporcionados por args formateados según las especificaciones dadas en fmt .
- Escribe out en stream :
-
- Si stream se refiere a una terminal que solo es capaz de mostrar Unicode mediante una API nativa de Unicode , vacía el búfer de stream y escribe out en la terminal usando la API nativa de Unicode.
- De lo contrario, escribe out sin modificar en el stream .
- stream no es un puntero válido a un flujo de salida C.
- out contiene unidades de código Unicode inválidas code units cuando se utiliza la API nativa de Unicode.
std :: vprint_unicode ( stream, "{}" , std:: make_format_args ( out ) ) ; .
|
Después de escribir caracteres en el flujo de salida, establece un punto de control observable . |
(since C++26) |
Contenidos |
Parámetros
| stream | - | flujo de archivo de salida donde escribir | ||||||||||||||||||||||||||||||||||||||||||||||
| 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.
- std::system_error , si falla la escritura en el flujo.
- Propaga cualquier excepción lanzada por los formatters utilizados, por ejemplo std::format_error .
Notas
El estándar de C++ alienta a los implementadores a producir un mensaje de diagnóstico si out contiene unidades de código Unicode inválidas.
En POSIX, la escritura a una terminal se realiza utilizando las funciones estándar de E/S habituales, por lo que no es necesario tratar una terminal de manera diferente a cualquier otro flujo de archivos.
En Windows, el flujo se refiere a una terminal si
GetConsoleMode
(
_get_osfhandle
(
_fileno
(
stream
)
)
)
devuelve un valor distinto de cero (consulte la documentación de Windows para
GetConsoleMode
,
_get_osfhandle
, y
_fileno
). La API nativa de Unicode en Windows es
WriteConsoleW
.
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 |
202403L
|
(C++26)
(DR23) |
Salida formateada sin búfer | |
202406L
|
(C++26)
(DR23) |
Habilitar salida formateada sin búfer para más tipos formateables | |
__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 nativa Unicode siempre se utilizaba si la
terminal referida por stream puede mostrar Unicode |
solo se utiliza si la terminal solo puede usar
la API nativa Unicode para mostrar Unicode |
| P3107R5 | C++23 | las operaciones de impresión siempre estaban almacenadas en búfer | proporciona operaciones de impresión sin búfer |
| P3235R3 | C++23 |
los nombres de las funciones añadidas
por P3107R5 eran engañosos |
cambió los nombres de las funciones |
Véase también
|
imprime en
stdout
o un flujo de archivo usando
representación de argumentos
con borrado de tipo
(función) |
|
|
(C++23)
|
realiza salida compatible con Unicode usando
representación de argumentos
con borrado de tipo
(función) |
|
(C++23)
|
imprime en
stdout
o un flujo de archivo usando
representación formateada
de los argumentos
(plantilla de función) |
|
(C++20)
|
almacena la representación formateada de los argumentos en una nueva cadena
(plantilla de función) |
Enlaces externos
| 1. | Unicode |
| 2. | El Estándar Unicode Versión 14.0 - Especificación Principal |