Namespaces
Variants

std:: runtime_format

From cppreference.net
Défini dans l'en-tête <format>
/*runtime-format-string*/ < char > runtime_format ( std:: string_view fmt ) noexcept ;
(1) (depuis C++26)
/*runtime-format-string*/ < wchar_t > runtime_format ( std:: wstring_view fmt ) noexcept ;
(2) (depuis C++26)

Retourne un objet qui stocke une chaîne de format d'exécution directement utilisable dans les fonctions de formatage orientées utilisateur et peut être implicitement converti en std::basic_format_string .

Table des matières

Paramètres

fmt - une vue de chaîne

Valeur de retour

Un objet contenant la chaîne de format d'exécution du type à usage d'exposition uniquement :

Modèle de classe runtime-format-string <CharT>

template < class CharT >
struct /*runtime-format-string*/ ;
( exposition uniquement* )

Membres de données

L'objet retourné contient un membre de données non statique d'exposition uniquement str de type std::basic_string_view<CharT> .

Constructeurs et assignations

/*runtime-format-string*/ ( std:: basic_string_view < CharT > s ) noexcept ;
(1)
/*runtime-format-string*/ ( const /*runtime-format-string*/ & ) = delete ;
(2)
/*runtime-format-string*/ & operator = ( const /*runtime-format-string*/ & ) = delete ;
(3)
1) Initialise str avec s .
2) Le constructeur de copie est explicitement supprimé. Le type n'est ni copiable ni déplaçable.
3) L'assignation est explicitement supprimée.

Notes

Puisque le type de retour de runtime_format n'est ni copiable ni déplaçable, une tentative de passer runtime_fmt en tant que glvalue inhibe la construction de std::basic_format_string ce qui rend le programme mal formé. Pour construire std::basic_format_string avec runtime_format , la valeur retournée de runtime_format est passée directement à std::basic_format_string en tant que prvalue où l'élision de copie est garantie.

auto runtime_fmt = std::runtime_format("{}");
auto s0 = std::format(runtime_fmt, 1); // erreur
auto s1 = std::format(std::move(runtime_fmt), 1); // toujours erreur
auto s2 = std::format(std::runtime_format("{}"), 1); // correct
Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_format 202311L (C++26) Chaînes de formatage à l'exécution

Exemple

#include <format>
#include <print>
#include <string>
#include <string_view>
int main()
{
    std::print("Hello {}!\n", "world");
    std::string fmt;
    for (int i{}; i != 3; ++i)
    {
        fmt += "{} "; // construit la chaîne de formatage
        std::print("{} : ", fmt);
        std::println(std::runtime_format(fmt), "alpha", 'Z', 3.14, "unused");
    }
}

Sortie :

Hello world!
{}  : alpha
{} {}  : alpha Z
{} {} {}  : alpha Z 3.14

Voir aussi

(C++20)
stocke la représentation formatée des arguments dans une nouvelle chaîne
(modèle de fonction)
(C++20)
variante non-template de std::format utilisant une représentation d'arguments avec effacement de type
(fonction)
modèle de classe qui effectue des vérifications de chaîne de format à la compilation lors de la construction
(modèle de classe)