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.