C++20 vine cu o serie de funcții și îmbunătățiri noi, inclusiv format() funcţie. În acest articol, vom explora modul în care std::format poate fi utilizat pentru a formata șiruri în C++20.
C++20 – format std::
std::format este o nouă funcție introdusă în C++20 care oferă o modalitate de a formata șirurile de caractere prin înlocuirea substituenților în interiorul unui șir de format cu valorile argumentelor furnizate. Substituenții sunt reprezentați folosind {} în interiorul șirului de format.
ubuntu care comandă
Sintaxă:
std::string std::format(std::string_view format_string, Args... args);>
Tip de returnare: Funcția returnează un std::string care conține rezultatul formatat.
În C++20, este introdus un nou tip de date numit std::string_view, care oferă o vizualizare a șirului subiacent. Funcționează similar cu un indicator către un șir, dar cu caracteristici suplimentare de siguranță și confort. Args... reprezintă un parametru variadic, ceea ce înseamnă că funcția std::format poate lua un număr variabil de argumente de orice tip.
Exemple de C++ 20 – format std::
Exemplul 1:
Următorul cod demonstrează cum se utilizează std::format pentru a formata un șir cu substituenți pentru variabile.
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;> }> |
>
>
Ieșire
My name is John and my favorite number is 42>
În exemplul de mai sus, avem un șir de format care conține doi substituenți, {}. Transmitem valorile variabilelor name și num la funcția std::format, care înlocuiește substituenții cu valorile variabilelor. Șirul rezultat este stocat în variabila formatted_str, care este apoi tipărită pe consolă.
Exemplul 2:
În exemplul următor, vom înțelege argumentele poziționale cu std::format.
C++
while loop java
// 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;> }> |
>
>
Ieșire
My name is John and my favorite number is 42>
În exemplul de mai sus, am inversat ordinea argumentelor din funcția std::format și am adăugat indici de poziție la substituenți. Primul substituent este înlocuit cu valoarea num, iar al doilea substituent este înlocuit cu valoarea numelui.
Exemplul 3:
În exemplul următor, vom vedea cum std::format oferă multe opțiuni pentru formatarea șirurilor, unde putem folosi substituenții {} pentru a specifica opțiunile de formatare pentru fiecare argument.
C++
// 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;> }> |
>
>
Ieșire
My name is Jo and pi is 3.14>
În exemplul de mai sus, am adăugat opțiuni de formatare la substituenți. Primul substituent este formatat ca un număr în virgulă mobilă cu două zecimale, iar al doilea substituent este formatat ca un șir cu o lățime maximă de două caractere.
Concluzie
std::format acceptă o gamă largă de opțiuni de formatare, inclusiv capacitatea de a formata tipuri definite de utilizator. Este mai eficient decât opțiunile anterioare de formatare a șirurilor în C++, cum ar fi sprintf și printf.