std:: vprint_unicode, std:: vprint_unicode_buffered
|
Défini dans l'en-tête
<print>
|
||
|
void
vprint_unicode
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(1) | (depuis C++23) |
|
void
vprint_unicode_buffered
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(2) | (depuis C++23) |
|
void
vprint_unicode_buffered
(
std::
string_view
fmt,
std::
format_args
args
)
;
|
(3) | (depuis C++23) |
Formate args selon la chaîne de format fmt , et écrit le résultat dans le flux de sortie.
- Verrouille stream .
- Soit out la représentation caractère des arguments de formatage fournis par args formatés selon les spécifications données dans fmt .
- Écrit out dans stream :
-
- Si stream fait référence à un terminal capable d'afficher Unicode uniquement via une API Unicode native , vide le tampon de stream et écrit out dans le terminal en utilisant l'API Unicode native.
- Sinon, écrit out non modifié dans le stream .
- stream n'est pas un pointeur valide vers un flux de sortie C.
- out contient des unités de code Unicode non valides lorsque l'API Unicode native est utilisée.
std :: vprint_unicode ( stream, "{}" , std:: make_format_args ( out ) ) ; .
|
Après avoir écrit des caractères dans le flux de sortie, établit un point de contrôle observable . |
(since C++26) |
Table des matières |
Paramètres
| stream | - | flux de fichier de sortie vers lequel écrire | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
Chaque champ de remplacement a le format suivant :
1)
champ de remplacement sans spécification de format
2)
champ de remplacement avec spécification de format
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | arguments à formater | ||||||||||||||||||||||||||||||||||||||||||||||
Exceptions
- std::bad_alloc en cas d'échec d'allocation.
- std::system_error , si l'écriture dans le flux échoue.
- Propage toute exception levée par les formatters utilisés, par exemple std::format_error .
Notes
La norme C++ encourage les implémenteurs à produire un message de diagnostic si out contient des unités de code Unicode invalides.
Sur POSIX, l'écriture vers un terminal s'effectue en utilisant les fonctions standard d'E/S habituelles, il n'est donc pas nécessaire de traiter un terminal différemment de tout autre flux de fichier.
Sur Windows, le flux fait référence à un terminal si
GetConsoleMode
(
_get_osfhandle
(
_fileno
(
stream
)
)
)
renvoie une valeur non nulle (consultez la documentation Windows pour
GetConsoleMode
,
_get_osfhandle
, et
_fileno
). L'API Unicode native sur Windows est
WriteConsoleW
.
Si l'invocation de l'API Unicode native nécessite un transcodage, les unités de code non valides sont remplacées par
U+FFFD
CARACTÈRE DE REMPLACEMENT (voir "The Unicode Standard - Core Specification",
Chapitre 3.9
).
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | Sortie formatée |
202403L
|
(C++26)
(DR23) |
Sortie formatée non tamponnée | |
202406L
|
(C++26)
(DR23) |
Activation de la sortie formatée non tamponnée pour plus de types formatables | |
__cpp_lib_format
|
202207L
|
(C++23) | Exposition de std::basic_format_string |
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 4044 | C++23 |
l'API Unicode native était toujours utilisée si le
terminal référencé par stream peut afficher l'Unicode |
uniquement utilisé si le terminal ne peut utiliser
que l'API Unicode native pour afficher l'Unicode |
| P3107R5 | C++23 | les opérations d'impression étaient toujours mises en mémoire tampon | fournit des opérations d'impression sans mémoire tampon |
| P3235R3 | C++23 |
les noms des fonctions ajoutées
par P3107R5 étaient trompeurs |
a modifié les noms des fonctions |
Voir aussi
|
imprime vers
stdout
ou un flux de fichier en utilisant
type-erased
la représentation des arguments
(fonction) |
|
|
(C++23)
|
effectue une sortie compatible Unicode en utilisant
type-erased
la représentation des arguments
(fonction) |
|
(C++23)
|
imprime vers
stdout
ou un flux de fichier en utilisant
formatted
la représentation des arguments
(modèle de fonction) |
|
(C++20)
|
stocke la représentation formatée des arguments dans une nouvelle chaîne
(modèle de fonction) |
Liens externes
| 1. | Unicode |
| 2. | Norme Unicode Version 14.0 - Spécification Principale |