C++20 kommer med en rekke nye funksjoner og forbedringer, inkludert format() funksjon. I denne artikkelen vil vi utforske hvordan std::format kan brukes til å formatere strenger i C++20.
C++20 – std::format
std::format er en ny funksjon introdusert i C++20 som gir en måte å formatere strenger ved å erstatte plassholdere inne i en formatstreng med verdiene til de angitte argumentene. Plassholderne er representert ved hjelp av {} inne i formatstrengen.
Syntaks:
std::string std::format(std::string_view format_string, Args... args);>
Returtype: Funksjonen returnerer en std::streng som inneholder den formaterte utdata.
I C++20 introduseres en ny datatype kalt std::string_view, som gir en oversikt over den underliggende strengen. Den fungerer på samme måte som en peker til en streng, men med ekstra sikkerhets- og bekvemmelighetsfunksjoner. Args... representerer en variadisk parameter, som betyr at std::format-funksjonen kan ta et variabelt antall argumenter av enhver type.
Eksempler på C++ 20 – std::format
Eksempel 1:
Følgende kode viser hvordan du bruker std::format for å formatere en streng med plassholdere 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
>
>
Produksjon
My name is John and my favorite number is 42>
I eksemplet ovenfor har vi en formatstreng som inneholder to plassholdere, {}. Vi sender verdiene til variablene navn og num til std::format-funksjonen, som erstatter plassholderne med verdiene til variablene. Den resulterende strengen lagres i variabelen formatted_str, som deretter skrives ut til konsollen.
Eksempel 2:
I følgende eksempel vil vi forstå posisjonsargumentene 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;> }> |
>
tilfeldig tall c-kode
>
Produksjon
My name is John and my favorite number is 42>
I eksemplet ovenfor har vi snudd rekkefølgen på argumentene i std::format-funksjonen, og vi har lagt til posisjonsindekser til plassholderne. Den første plassholderen erstattes med verdien av num og den andre plassholderen erstattes med verdien av navnet.
Eksempel 3:
I følgende eksempel vil vi se hvordan std::format gir mange alternativer for formatering av strenger, der vi kan bruke {} plassholdere til å spesifisere formateringsalternativer 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;> }> |
>
aritmetisk logikkenhet
>
Produksjon
My name is Jo and pi is 3.14>
I eksemplet ovenfor har vi lagt til formateringsalternativer til plassholderne. Den første plassholderen er formatert som et flyttall med to desimaler, og den andre plassholderen er formatert som en streng med en maksimal bredde på to tegn.
Konklusjon
std::format støtter et bredt spekter av formateringsalternativer, inkludert muligheten til å formatere brukerdefinerte typer. Det er mer effektivt enn tidligere strengformateringsalternativer i C++, for eksempel sprintf og printf.