logo

C++ 20 – std::formāts

C++20 ir aprīkots ar virkni jaunu funkciju un uzlabojumu, tostarp formāts () funkciju. Šajā rakstā mēs izpētīsim, kā std::format var izmantot, lai formatētu virknes programmā C++20.

C++20 – std::formāts

std::format ir jauna funkcija, kas ieviesta programmā C++20, kas nodrošina veidu, kā formatēt virknes, aizstājot formāta virknes vietturus ar sniegto argumentu vērtībām. Vietturi tiek attēloti, izmantojot {} formāta virknē.



Sintakse:

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

Atgriešanas veids: Funkcija atgriež std::string, kurā ir formatēta izvade.

Programmā C++20 tiek ieviests jauns datu tips ar nosaukumu std::string_view, kas nodrošina pamatā esošās virknes skatu. Tas darbojas līdzīgi kā rādītājs uz virkni, bet ar papildu drošības un ērtības funkcijām. Args… ir mainīgs parametrs, kas nozīmē, ka funkcija std::format var pieņemt mainīgu skaitu jebkura veida argumentu.

C++ 20 piemēri – std::formāts

1. piemērs:

Šis kods parāda, kā izmantot std::format, lai formatētu virkni ar vietturiem mainīgajiem.



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;> }>

>

>

Izvade

My name is John and my favorite number is 42>

Iepriekš minētajā piemērā mums ir formāta virkne, kurā ir divi vietturi {}. Mainīgo nosaukumu un num vērtības nododam funkcijai std::format, kas aizstāj vietturus ar mainīgo vērtībām. Iegūtā virkne tiek saglabāta mainīgajā formatted_str, kas pēc tam tiek izdrukāta konsolē.

2. piemērs:

Nākamajā piemērā pozicionālos argumentus sapratīsim ar 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;> }>

>

virknē ir java

>

Izvade

My name is John and my favorite number is 42>

Iepriekš minētajā piemērā mēs esam apvērsuši std::format funkcijas argumentu secību un vietturiem esam pievienojuši pozīcijas indeksus. Pirmais vietturis tiek aizstāts ar vērtību cipars, bet otrais vietturis tiek aizstāts ar vārda vērtību.

3. piemērs:

Nākamajā piemērā mēs redzēsim, kā std::format nodrošina daudzas virkņu formatēšanas iespējas, kur mēs varam izmantot {} vietturus, lai norādītu formatēšanas opcijas katram argumentam.

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;> }>

>

>

Izvade

My name is Jo and pi is 3.14>

Iepriekš minētajā piemērā vietturiem esam pievienojuši formatēšanas opcijas. Pirmais vietturis ir formatēts kā peldošā komata skaitlis ar divām zīmēm aiz komata, bet otrais vietturis ir formatēts kā virkne, kuras maksimālais platums ir divas rakstzīmes.

Secinājums

std::format atbalsta plašu formatēšanas opciju klāstu, tostarp iespēju formatēt lietotāja definētus tipus. Tas ir efektīvāks nekā iepriekšējās virkņu formatēšanas opcijas programmā C++, piemēram, sprintf un printf.