logo

C++ 20 – std::format

C++20 kommer med et væld af nye funktioner og forbedringer, herunder format() fungere. I denne artikel vil vi undersøge, hvordan std::format kan bruges til at formatere strenge i C++20.

C++20 – std::format

std::format er en ny funktion introduceret i C++20, der giver en måde at formatere strenge ved at erstatte pladsholdere inde i en formatstreng med værdierne af de angivne argumenter. Pladsholderne er repræsenteret ved hjælp af {} inde i formatstrengen.



Syntaks:

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

Returtype: Funktionen returnerer en std::streng, der indeholder det formaterede output.

I C++20 introduceres en ny datatype ved navn std::string_view, som giver et overblik over den underliggende streng. Det fungerer på samme måde som en pegepind til en streng, men med yderligere sikkerheds- og bekvemmelighedsfunktioner. Args... repræsenterer en variadisk parameter, hvilket betyder, at std::format-funktionen kan tage et variabelt antal argumenter af enhver type.

Eksempler på C++ 20 – std::format

Eksempel 1:

Følgende kode viser, hvordan man bruger std::format til at formatere en streng med pladsholdere for variabler.



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

returtype i java

>

>

Produktion

My name is John and my favorite number is 42>

I ovenstående eksempel har vi en formatstreng, der indeholder to pladsholdere, {}. Vi sender værdierne af variablerne navn og num til std::format-funktionen, som erstatter pladsholderne med variablernes værdier. Den resulterende streng gemmes i variablen formatted_str, som derefter udskrives til konsollen.

Eksempel 2:

I det følgende eksempel vil vi forstå de positionelle argumenter med 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;> }>

>

strukturer ved hjælp af arrays i c

>

Produktion

My name is John and my favorite number is 42>

I ovenstående eksempel har vi vendt rækkefølgen af ​​argumenterne i std::format-funktionen, og vi har tilføjet positionsindekser til pladsholderne. Den første pladsholder erstattes med værdien af ​​num, og den anden pladsholder erstattes med værdien af ​​navn.

Eksempel 3:

I det følgende eksempel vil vi se, hvordan std::format giver mange muligheder for formatering af strenge, hvor vi kan bruge {} pladsholderne til at angive formateringsmuligheder for hvert 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;> }>

>

java objekt
>

Produktion

My name is Jo and pi is 3.14>

I ovenstående eksempel har vi tilføjet formateringsmuligheder til pladsholderne. Den første pladsholder er formateret som et flydende decimaltal med to decimaler, og den anden pladsholder er formateret som en streng med en maksimal bredde på to tegn.

Konklusion

std::format understøtter en lang række formateringsmuligheder, inklusive muligheden for at formatere brugerdefinerede typer. Det er mere effektivt end tidligere strengformateringsindstillinger i C++, såsom sprintf og printf.