Namespaces
Variants

std:: print (std::ostream)

From cppreference.net
Défini dans l'en-tête <ostream>
template < class ... Args >
void print ( std:: ostream & os, std:: format_string < Args... > fmt, Args && ... args ) ;
(depuis C++23)

Formate args selon la chaîne de format fmt , et insère le résultat dans le flux os .

Si l' encodage de littéral ordinaire est UTF-8, équivalent à :

Le comportement n'est pas défini si std:: formatter < Ti, char > ne satisfait pas aux exigences BasicFormatter pour tout Ti dans Args (comme requis par std:: make_format_args ).

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 se compose 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 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

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

#include <array>
#include <cctype>
#include <cstdio>
#include <format>
#include <numbers>
#include <ranges>
#include <sstream>
int main()
{
    std::array<char, 24> buf;
    std::format_to(buf.begin(), "{:.15f}", std::numbers::sqrt2);
    unsigned num{}, sum{};
    for (auto n : buf
                | std::views::filter(isdigit)
                | std::views::transform([](char x) { return x - '0'; })
                | std::views::take_while([&sum](char) { return sum < 42; }))
        sum += n, ++num;
    std::stringstream stream;
#ifdef __cpp_lib_print
    std::print(stream,
#else
    stream << std::format(
#endif
        "√2 \N{ALMOST EQUAL TO} {0}.\n"
        "The sum of its first {1} digits is {2}.",
        std::numbers::sqrt2, num, sum
    );
    std::puts(stream.str().data());
}

Sortie :

√2 ≈ 1.4142135623730951.
The sum of its first 13 digits is 42.

Voir aussi

affiche une représentation formatée des arguments avec ajout de ' \n '
(modèle de fonction)
(C++23)
imprime vers stdout ou un flux de fichier en utilisant une représentation formatée 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)