logo

C++ 20 – std :: format

C++20 est livré avec une multitude de nouvelles fonctionnalités et améliorations, notamment format() fonction. Dans cet article, nous explorerons comment std::format peut être utilisé pour formater des chaînes en C++20.

C++20 – std :: format

std::format est une nouvelle fonction introduite en C++20 qui fournit un moyen de formater des chaînes en remplaçant les espaces réservés à l'intérieur d'une chaîne de format par les valeurs des arguments fournis. Les espaces réservés sont représentés par {} à l'intérieur de la chaîne de format.



Syntaxe:

std::string std::format(std::string_view format_string, Args... args);>

Type de retour : La fonction renvoie un std::string qui contient la sortie formatée.

En C++20, un nouveau type de données nommé std::string_view est introduit, qui fournit une vue de la chaîne sous-jacente. Il fonctionne de la même manière qu'un pointeur vers une chaîne, mais avec des fonctionnalités de sécurité et de commodité supplémentaires. Le Args… représente un paramètre variadique, ce qui signifie que la fonction std::format peut prendre un nombre variable d'arguments de n'importe quel type.

Exemples de C++ 20 – std :: format

Exemple 1:

Le code suivant montre comment utiliser std::format pour formater une chaîne avec des espaces réservés pour les variables.



C++






// C++ Program to implement> // C++ 20 - std::format> #include> #include> > using> namespace> std;> > int> main()> {> >// Declare variables> >int> num = 42;> >std::string name =>'John'>;> > >// Use std::format to format a string with placeholders> >// for variables> >std::string formatted_str = std::format(> >'My name is {} and my favorite number is {}'>, name,> >num);> > >// Print formatted string to console> >std::cout << formatted_str << std::endl;> > >return> 0;> }>

>

boîte de liste Java

>

Sortir

My name is John and my favorite number is 42>

Dans l'exemple ci-dessus, nous avons une chaîne de format qui contient deux espaces réservés, {}. Nous transmettons les valeurs des variables name et num à la fonction std::format, qui remplace les espaces réservés par les valeurs des variables. La chaîne résultante est stockée dans la variable formatted_str, qui est ensuite imprimée sur la console.

Exemple 2 :

Dans l'exemple suivant, nous comprendrons les arguments de position avec std::format.

C++




// C++ Program to implement> // C++ 20 - std::format> #include> #include> > int> main()> {> >// Declare an integer variable named num> >// and initialize it with the value 42> >int> num = 42;> >// Declare a string variable named name> >// and initialize it with the value 'John'> >std::string name =>'John'>;> > >// Call the std::format function to create a formatted> >// string with placeholders for num and name The first> >// placeholder is represented by {0} and is replaced by> >// the value of num The second placeholder is> >// represented by {1} and is replaced by the value of> >// name> >std::string formatted_str = std::format(> >'My name is {1} and my favorite number is {0}'>, num, name);> > >// Print the formatted string to the console> >std::cout << formatted_str << std::endl;> >return> 0;> }>

>

>

Sortir

My name is John and my favorite number is 42>

Dans l'exemple ci-dessus, nous avons inversé l'ordre des arguments dans la fonction std::format et nous avons ajouté des indices de position aux espaces réservés. Le premier espace réservé est remplacé par la valeur de num et le deuxième espace réservé est remplacé par la valeur de name.

Exemple 3 :

Dans l'exemple suivant, nous verrons comment std::format fournit de nombreuses options de formatage des chaînes, où nous pouvons utiliser les espaces réservés {} pour spécifier les options de formatage pour chaque argument.

C++


si sinon sinon java



// C++ Program to implement> // C++ 20 - std::format> #include> #include> > int> main()> {> > >// Declare and initialize a double variable.> >double> num = 3.14159;> > >// Declare and initialize a string variable.> >std::string name =>'John'>;> > >// Format a string with two placeholders, one for a> >// double and another for a string. The first> >// placeholder formats the double with two decimal> >// places and the second placeholder truncates the> >// string to two characters.> >std::string formatted_str = std::format(> >'My name is {1:.2s} and pi is {0:.2f}'>, num, name);> > >// Print the formatted string to the console.> >std::cout << formatted_str << std::endl;> > >return> 0;> }>

>

>

Sortir

My name is Jo and pi is 3.14>

Dans l'exemple ci-dessus, nous avons ajouté des options de formatage aux espaces réservés. Le premier espace réservé est formaté sous forme de nombre à virgule flottante avec deux décimales et le deuxième espace réservé est formaté sous forme de chaîne avec une largeur maximale de deux caractères.

Conclusion

std::format prend en charge un large éventail d'options de formatage, y compris la possibilité de formater des types définis par l'utilisateur. Il est plus efficace que les options de formatage de chaîne précédentes en C++, telles que sprintf et printf.