logo

C++ 20 – std::format

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.