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.