Namespaces
Variants

std:: vformat

From cppreference.net
Défini dans l'en-tête <format>
(1) (depuis C++20)
(2) (depuis C++20)
(3) (depuis C++20)
(4) (depuis C++20)

Formate les arguments contenus dans args selon la chaîne de format fmt , et retourne le résultat sous forme de chaîne. S'il est présent, loc est utilisé pour le formatage spécifique aux paramètres régionaux.

Table des matières

Paramètres

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 dans 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 une 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 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
loc - std::locale utilisé pour le formatage spécifique à la locale

Valeur de retour

Un objet chaîne contenant le résultat formaté.

Exceptions

Lance std::format_error si fmt n'est pas une chaîne de format valide pour les arguments fournis, ou std::bad_alloc en cas d'échec d'allocation. Propage également toute exception levée par les opérations de formateur ou d'itérateur.

Exemple

#include <format>
#include <iostream>
template<typename... Args>
inline void println(const std::format_string<Args...> fmt, Args&&... args)
{
    std::cout << std::vformat(fmt.get(), std::make_format_args(args...)) << '\n';
}
int main()
{
    println("{}{} {}{}", "Hello", ',', "C++", -1 + 2 * 3 * 4);
}

Sortie :

Hello, C++23

Voir aussi