std:: vprint_unicode (std::ostream)
|
Défini dans l'en-tête
<ostream>
|
||
|
void
vprint_unicode
(
std::
ostream
&
os,
std:: string_view fmt, std:: format_args args ) ; |
(depuis C++23) | |
Formate args selon la chaîne de format fmt , et écrit le résultat dans le flux de sortie os . Se comporte comme une FormattedOutputFunction de os , sauf que certains détails du signalement d'erreur diffèrent .
Effectue les opérations suivantes dans l'ordre :
- Premièrement, la fonction construit et vérifie l'objet sentry .
- Initialise une variable automatique comme si par std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; .
- Écrit out vers os :
-
- Si os fait référence à un terminal qui ne peut afficher Unicode que via une API Unicode native , vide le tampon de os et écrit out sur le terminal en utilisant l'API Unicode native.
-
Sinon, insère la séquence de caractères
[out. begin ( ),out. end ( ))dans os .
Si l'écriture vers le terminal ou l'insertion dans os échoue, appelle os. setstate ( std:: ios_base :: badbit ) .
|
Après avoir écrit des caractères dans os , établit un point de contrôle observable . |
(since C++26) |
Si out contient des unités de code Unicode non valides lorsque l'API Unicode native est utilisée, le comportement est indéfini.
Table des matières |
Paramètres
| os | - | flux de sortie dans lequel insérer les données | ||||||||||||||||||||||||||||||||||||||||||||||
| 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.
- Propage toute exception levée par un formatter , par exemple std::format_error , sans tenir compte de la valeur de os. exceptions ( ) et sans activer ios_base::badbit dans l'état d'erreur de os .
- Peut lever ios_base::failure causé par os. setstate ( ios_base :: badbit ) qui est appelé si une insertion dans os échoue.
Notes
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 |
__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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 4044 | C++23 |
l'API Unicode native était toujours utilisée si le
terminal référencé par os peut afficher l'Unicode |
seulement utilisée si le terminal ne peut utiliser
que l'API Unicode native pour afficher l'Unicode |
Voir aussi
|
(C++23)
|
affiche des données caractères en utilisant
une représentation d'arguments
à type effacé
(fonction) |
|
(C++23)
|
affiche la
représentation formatée
des arguments
(modèle de fonction) |
|
insère des données caractères ou insère dans un flux rvalue
(modèle de fonction) |
|
|
imprime vers
stdout
compatible Unicode ou un flux de fichier en utilisant
une représentation d'arguments
à type effacé
(fonction) |
|
|
(C++20)
|
stocke la représentation formatée des arguments dans une nouvelle chaîne
(modèle de fonction) |
Liens externes
| 1. | Unicode — Wikipédia |
| 2. | The Unicode Standard Version 14.0 — Core Specification |