logo

C++ 20 – std::muoto

C++20 sisältää joukon uusia ominaisuuksia ja parannuksia, mukaan lukien muoto() toiminto. Tässä artikkelissa tutkimme, kuinka std::formaattia voidaan käyttää merkkijonojen muotoiluun C++20:ssa.

C++20 – std::muoto

std::format on uusi C++20:ssä käyttöön otettu funktio, joka tarjoaa tavan muotoilla merkkijonoja korvaamalla muotomerkkijonon sisällä olevat paikkamerkit annettujen argumenttien arvoilla. Paikkamerkit esitetään muodossa {} muotomerkkijonon sisällä.



Syntaksi:

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

Palautustyyppi: Funktio palauttaa std::merkkijonon, joka sisältää muotoillun tulosteen.

C++20:ssä otetaan käyttöön uusi tietotyyppi nimeltä std::string_view, joka tarjoaa näkymän taustalla olevasta merkkijonosta. Se toimii samalla tavalla kuin osoitin merkkijonoon, mutta siinä on lisäturva- ja käyttömukavuusominaisuuksia. Args… edustaa variadic-parametria, mikä tarkoittaa, että std::format-funktio voi ottaa vaihtelevan määrän minkä tahansa tyyppisiä argumentteja.

Esimerkkejä C++ 20 – std::formaatista

Esimerkki 1:

Seuraava koodi näyttää, kuinka std::format-muotoa käytetään muuttujien paikkamerkeillä varustetun merkkijonon muotoiluun.



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

>

>

Lähtö

My name is John and my favorite number is 42>

Yllä olevassa esimerkissä meillä on muotomerkkijono, joka sisältää kaksi paikkamerkkiä, {}. Välitämme muuttujien name ja num arvot std::format-funktiolle, joka korvaa paikkamerkit muuttujien arvoilla. Tuloksena oleva merkkijono tallennetaan muuttujaan formatted_str, joka tulostetaan sitten konsoliin.

Esimerkki 2:

Seuraavassa esimerkissä ymmärrämme sijaintiargumentit std::formatilla.

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

>

>

Lähtö

My name is John and my favorite number is 42>

Yllä olevassa esimerkissä olemme vaihtaneet argumenttien järjestyksen std::format-funktiossa ja olemme lisänneet paikkamerkitsimiin paikkaindeksit. Ensimmäinen paikkamerkki korvataan arvolla num ja toinen paikkamerkki nimen arvolla.

Esimerkki 3:

Seuraavassa esimerkissä näemme, kuinka std::format tarjoaa monia vaihtoehtoja merkkijonojen muotoiluun, jossa voimme käyttää {} paikkamerkkejä määrittääksesi muotoiluasetukset kullekin argumentille.

C++




binääripuu vs bst

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

>

>

Lähtö

My name is Jo and pi is 3.14>

Yllä olevassa esimerkissä olemme lisänneet muotoiluvaihtoehdot paikkamerkkeihin. Ensimmäinen paikkamerkki on muotoiltu liukulukuksi kahdella desimaalilla, ja toinen paikkamerkki muotoillaan merkkijonoksi, jonka leveys on enintään kaksi merkkiä.

Johtopäätös

std::format tukee laajaa valikoimaa muotoiluvaihtoehtoja, mukaan lukien kyky muotoilla käyttäjän määrittämiä tyyppejä. Se on tehokkaampi kuin aiemmat C++:n merkkijonomuotoiluvaihtoehdot, kuten sprintf ja printf.