C++20 prichádza s množstvom nových funkcií a vylepšení, vrátane formát() funkciu. V tomto článku preskúmame, ako sa dá std::format použiť na formátovanie reťazcov v C++20.
C++20 – std::formát
std::format je nová funkcia zavedená v C++20, ktorá poskytuje spôsob formátovania reťazcov nahradením zástupných symbolov vo formátovacom reťazci hodnotami poskytnutých argumentov. Zástupné symboly sú reprezentované pomocou {} vo formáte reťazca.
Syntax:
std::string std::format(std::string_view format_string, Args... args);>
Typ návratu: Funkcia vráti std::string, ktorý obsahuje naformátovaný výstup.
V C++20 je zavedený nový dátový typ s názvom std::string_view, ktorý poskytuje pohľad na základný reťazec. Funguje podobne ako ukazovateľ na reťazec, ale s ďalšími bezpečnostnými a pohodlnými funkciami. Args… predstavuje variadický parameter, čo znamená, že funkcia std::format môže mať premenný počet argumentov akéhokoľvek typu.
Príklady C++ 20 – std::format
Príklad 1:
Nasledujúci kód ukazuje, ako použiť std::format na formátovanie reťazca so zástupnými symbolmi pre premenné.
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;> }> |
>
>
Výkon
My name is John and my favorite number is 42>
Vo vyššie uvedenom príklade máme formátovací reťazec, ktorý obsahuje dva zástupné symboly, {}. Hodnoty premenných name a num odovzdáme funkcii std::format, ktorá nahradí zástupné symboly hodnotami premenných. Výsledný reťazec sa uloží do premennej formatted_str, ktorá sa potom vytlačí do konzoly.
vyberte multi table sql
Príklad 2:
V nasledujúcom príklade pochopíme pozičné argumenty s 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;> }> |
hashmap v jave
>
>
Výkon
My name is John and my favorite number is 42>
Vo vyššie uvedenom príklade sme obrátili poradie argumentov vo funkcii std::format a do zástupných symbolov sme pridali pozičné indexy. Prvý zástupný symbol je nahradený hodnotou num a druhý zástupný symbol je nahradený hodnotou name.
Príklad 3:
V nasledujúcom príklade uvidíme, ako std::format poskytuje veľa možností pre formátovanie reťazcov, kde môžeme použiť zástupné symboly {} na špecifikovanie možností formátovania pre každý 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;> }> |
>
>
Výkon
My name is Jo and pi is 3.14>
Vo vyššie uvedenom príklade sme do zástupných symbolov pridali možnosti formátovania. Prvý zástupný symbol je formátovaný ako číslo s pohyblivou rádovou čiarkou s dvoma desatinnými miestami a druhý zástupný symbol je formátovaný ako reťazec s maximálnou šírkou dva znaky.
Záver
std::format podporuje širokú škálu možností formátovania vrátane možnosti formátovania užívateľom definovaných typov. Je to efektívnejšie ako predchádzajúce možnosti formátovania reťazcov v C++, ako napríklad sprintf a printf.