C++20 ima številne nove funkcije in izboljšave, vključno z format() funkcijo. V tem članku bomo raziskali, kako je mogoče uporabiti std::format za oblikovanje nizov v C++20.
C++20 – std::format
std::format je nova funkcija, uvedena v C++20, ki ponuja način za oblikovanje nizov z zamenjavo ograd znotraj formatnega niza z vrednostmi podanih argumentov. Oznake mesta so predstavljene z {} znotraj formatnega niza.
Sintaksa:
std::string std::format(std::string_view format_string, Args... args);>
Vrsta vračila: Funkcija vrne std::string, ki vsebuje oblikovan izhod.
V C++20 je uveden nov podatkovni tip z imenom std::string_view, ki nudi pogled na osnovni niz. Deluje podobno kot kazalec na niz, vendar z dodatnimi varnostnimi in priročnimi funkcijami. Args… predstavlja spremenljiv parameter, kar pomeni, da lahko funkcija std::format sprejme različno število argumentov katere koli vrste.
Primeri C++ 20 – std::format
Primer 1:
Naslednja koda prikazuje, kako uporabiti std::format za oblikovanje niza z ogradami za spremenljivke.
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;> }> |
>
>
Izhod
My name is John and my favorite number is 42>
V zgornjem primeru imamo formatni niz, ki vsebuje dve ogradi, {}. Vrednosti spremenljivk name in num posredujemo funkciji std::format, ki zamenja ograde z vrednostmi spremenljivk. Nastali niz je shranjen v spremenljivki formatted_str, ki se nato natisne na konzolo.
Primer 2:
V naslednjem primeru bomo razumeli pozicijske argumente s std::format.
C++
globalne spremenljivke js
// 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;> }> |
>
>
Izhod
My name is John and my favorite number is 42>
V zgornjem primeru smo obrnili vrstni red argumentov v funkciji std::format in ogradam dodali položajne indekse. Prvi nadomestni znak je nadomeščen z vrednostjo num, drugi nadomestni znak pa z vrednostjo name.
Primer 3:
V naslednjem primeru bomo videli, kako std::format ponuja številne možnosti za oblikovanje nizov, kjer lahko uporabimo ogradne oznake {}, da določimo možnosti oblikovanja za vsak 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;> }> |
>
>
Izhod
My name is Jo and pi is 3.14>
V zgornjem primeru smo ogradam dodali možnosti oblikovanja. Prvi nadomestni znak je oblikovan kot število s plavajočo vejico z dvema decimalnima mestoma, drugi nadomestni znak pa je oblikovan kot niz z največjo širino dveh znakov.
Zaključek
std::format podpira široko paleto možnosti oblikovanja, vključno z možnostjo oblikovanja uporabniško določenih tipov. Je učinkovitejši od prejšnjih možnosti oblikovanja nizov v C++, kot sta sprintf in printf.