logo

C++ 20 – std::formato

C++20 include una serie di nuove funzionalità e miglioramenti, incluso formato() funzione. In questo articolo esploreremo come utilizzare std::format per formattare le stringhe in C++20.

C++20 – std::formato

std::format è una nuova funzione introdotta in C++20 che fornisce un modo per formattare le stringhe sostituendo i segnaposto all'interno di una stringa di formato con i valori degli argomenti forniti. I segnaposto sono rappresentati utilizzando {} all'interno della stringa di formato.



Sintassi:

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

Tipo di reso: La funzione restituisce un std::string che contiene l'output formattato.

In C++20 viene introdotto un nuovo tipo di dati denominato std::string_view, che fornisce una visualizzazione della stringa sottostante. Funziona in modo simile a un puntatore a una stringa ma con funzionalità aggiuntive di sicurezza e comodità. Args… rappresenta un parametro variadico, il che significa che la funzione std::format può accettare un numero variabile di argomenti di qualsiasi tipo.

Esempi di C++ 20 – std::format

Esempio 1:

Il codice seguente illustra come utilizzare std::format per formattare una stringa con segnaposto per le variabili.



Ubuntu quale comando

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

>

>

Produzione

altalena Java
My name is John and my favorite number is 42>

Nell'esempio precedente, abbiamo una stringa di formato che contiene due segnaposto, {}. Passiamo i valori delle variabili name e num alla funzione std::format, che sostituisce i segnaposto con i valori delle variabili. La stringa risultante viene archiviata nella variabile formatted_str, che viene quindi stampata sulla console.

Esempio 2:

Nell'esempio seguente, comprenderemo gli argomenti posizionali con 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;> }>

>

>

Produzione

My name is John and my favorite number is 42>

Nell'esempio precedente, abbiamo invertito l'ordine degli argomenti nella funzione std::format e abbiamo aggiunto indici di posizione ai segnaposto. Il primo segnaposto viene sostituito con il valore di num e il secondo segnaposto viene sostituito con il valore di name.

Esempio 3:

Nell'esempio seguente vedremo come std::format fornisce molte opzioni per la formattazione delle stringhe, dove possiamo utilizzare i segnaposto {} per specificare le opzioni di formattazione per ciascun argomento.

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

>

>

Produzione

vantaggi di instagram per uso personale
My name is Jo and pi is 3.14>

Nell'esempio sopra, abbiamo aggiunto opzioni di formattazione ai segnaposto. Il primo segnaposto è formattato come un numero a virgola mobile con due posizioni decimali e il secondo segnaposto è formattato come una stringa con una larghezza massima di due caratteri.

Conclusione

std::format supporta un'ampia gamma di opzioni di formattazione, inclusa la possibilità di formattare tipi definiti dall'utente. È più efficiente delle precedenti opzioni di formattazione delle stringhe in C++, come sprintf e printf.