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.