Namespaces
Variants

std:: vprint_unicode (std::ostream)

From cppreference.net
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 :

  1. Premièrement, la fonction construit et vérifie l'objet sentry .
  2. Initialise une variable automatique comme si par std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; .
  3. É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 - un objet qui représente la chaîne de format. La chaîne de format est constituée de
  • caractères ordinaires (sauf { et } ), qui sont copiés inchangés vers la sortie,
  • séquences d'échappement { { et } } , qui sont remplacées respectivement par { et } dans la sortie, et
  • champs de remplacement.

Chaque champ de remplacement a le format suivant :

{ arg-id (optionnel) } (1)
{ arg-id (optionnel) : format-spec } (2)
1) champ de remplacement sans spécification de format
2) champ de remplacement avec spécification de format
arg-id - spécifie l'index de l'argument dans args dont la valeur doit être utilisée pour le formatage ; s'il est omis, les arguments sont utilisés dans l'ordre.

Les arg-id s dans une chaîne de format doivent tous être présents ou tous être omis. Mélanger l'indexation manuelle et automatique est une erreur.

format-spec - la spécification de format définie par la spécialisation std::formatter pour l'argument correspondant. Ne peut pas commencer par } .

(depuis C++23)
(depuis C++26)
  • Pour les autres types formatables, la spécification de format est déterminée par les spécialisations formatter définies par l'utilisateur.
args - arguments à formater

Exceptions

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

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

affiche des données caractères en utilisant une représentation d'arguments à type effacé
(fonction)
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