logo

C++ 20 – std::formatas

C++20 yra su daugybe naujų funkcijų ir patobulinimų, įskaitant formatas () funkcija. Šiame straipsnyje mes išnagrinėsime, kaip std::format gali būti naudojamas formatuojant eilutes C++20.

C++20 – std::formatas

std::format yra nauja funkcija, įdiegta C++20, kuri suteikia galimybę formatuoti eilutes pakeičiant formato eilutėje esančius vietos rezervavimo ženklus pateiktų argumentų reikšmėmis. Vietos žymos vaizduojamos naudojant {} formato eilutėje.



Sintaksė:

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

Grąžinimo tipas: Funkcija grąžina std::string, kurioje yra suformatuota išvestis.

java masyvas surūšiuotas

C++20 įvedamas naujas duomenų tipas, pavadintas std::string_view, kuris suteikia pagrindinės eilutės vaizdą. Jis veikia panašiai kaip žymeklis į eilutę, tačiau turi papildomų saugos ir patogumo funkcijų. Args… reiškia variadic parametrą, o tai reiškia, kad funkcija std::format gali priimti kintamą bet kokio tipo argumentų skaičių.

C++ 20 pavyzdžiai – std::format

1 pavyzdys:

Šis kodas parodo, kaip naudoti std::format formatuoti eilutę su kintamųjų vietos rezervavimo ženklais.



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

>

atsitiktinis ne java
>

Išvestis

My name is John and my favorite number is 42>

Aukščiau pateiktame pavyzdyje turime formato eilutę, kurioje yra dvi rezervuotos vietos {}. Kintamųjų name ir num reikšmes perduodame funkcijai std::format, kuri pakeičia vietos žymeklius kintamųjų reikšmėmis. Gauta eilutė saugoma kintamajame formatted_str, kuris vėliau atspausdinamas konsolėje.

2 pavyzdys:

Šiame pavyzdyje pozicinius argumentus suprasime su std::format.

C++




analoginis ryšys

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

užblokuoti kontaktai
>

>

Išvestis

My name is John and my favorite number is 42>

Aukščiau pateiktame pavyzdyje pakeitėme std::format funkcijos argumentų tvarką ir prie vietos rezervavimo ženklų įtraukėme padėties indeksus. Pirmoji rezervuota vieta pakeičiama skaičiaus reikšme, o antroji rezervuota vieta pakeičiama pavadinimo reikšme.

3 pavyzdys:

Šiame pavyzdyje pamatysime, kaip std::format suteikia daug eilučių formatavimo parinkčių, kur galime naudoti {} vietos rezervavimo ženklus, kad nurodytume kiekvieno argumento formatavimo parinktis.

C++




rūšiavimo algoritmai sujungia rūšiavimą

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

>

>

Išvestis

My name is Jo and pi is 3.14>

Aukščiau pateiktame pavyzdyje prie vietos rezervavimo ženklų pridėjome formatavimo parinkčių. Pirmoji rezervuota vieta suformatuota kaip slankiojo kablelio skaičius su dviem skaitmenimis po kablelio, o antroji rezervuota vieta suformatuota kaip eilutė, kurios plotis ne didesnis kaip du simboliai.

Išvada

std::format palaiko daugybę formatavimo parinkčių, įskaitant galimybę formatuoti vartotojo nustatytus tipus. Tai efektyviau nei ankstesnės eilučių formatavimo parinktys C++, pvz., sprintf ir printf.