C++20 kommer med en mängd nya funktioner och förbättringar, inklusive formatera() fungera. I den här artikeln kommer vi att utforska hur std::format kan användas för att formatera strängar i C++20.
bash sträng längd
C++20 – std::format
std::format är en ny funktion som introduceras i C++20 som ger ett sätt att formatera strängar genom att ersätta platshållare inuti en formatsträng med värdena för de angivna argumenten. Platshållarna representeras med {} i formatsträngen.
Syntax:
std::string std::format(std::string_view format_string, Args... args);>
Returtyp: Funktionen returnerar en std::sträng som innehåller den formaterade utdata.
I C++20 introduceras en ny datatyp med namnet std::string_view, som ger en vy av den underliggande strängen. Det fungerar på samma sätt som en pekare till en sträng men med ytterligare säkerhets- och bekvämlighetsfunktioner. Args... representerar en variadisk parameter, vilket innebär att std::format-funktionen kan ta ett variabelt antal argument av vilken typ som helst.
Exempel på C++ 20 – std::format
Exempel 1:
Följande kod visar hur man använder std::format för att formatera en sträng med platshållare för 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;> }> |
>
>
Produktion
dereference pointer c
My name is John and my favorite number is 42>
I exemplet ovan har vi en formatsträng som innehåller två platshållare, {}. Vi skickar värdena för variablerna namn och num till funktionen std::format, som ersätter platshållarna med variablernas värden. Den resulterande strängen lagras i variabeln formatted_str, som sedan skrivs ut till konsolen.
Exempel 2:
I följande exempel kommer vi att förstå positionsargumenten med std::format.
kruskal algoritm
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;> }> |
js global variabel
>
>
Produktion
My name is John and my favorite number is 42>
I exemplet ovan har vi vänt om ordningen på argumenten i std::format-funktionen och vi har lagt till positionsindex till platshållarna. Den första platshållaren ersätts med värdet av num och den andra platshållaren ersätts med värdet av namn.
Exempel 3:
I följande exempel kommer vi att se hur std::format ger många alternativ för formatering av strängar, där vi kan använda platshållarna {} för att ange formateringsalternativ för varje 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;> }> |
awt java
>
>
Produktion
My name is Jo and pi is 3.14>
I exemplet ovan har vi lagt till formateringsalternativ till platshållarna. Den första platshållaren är formaterad som ett flyttal med två decimaler, och den andra platshållaren är formaterad som en sträng med en maximal bredd på två tecken.
Slutsats
std::format stöder ett brett utbud av formateringsalternativ, inklusive möjligheten att formatera användardefinierade typer. Det är mer effektivt än tidigare strängformateringsalternativ i C++, som sprintf och printf.