logo

C++ 20 – std::format

C++ 20 zawiera wiele nowych funkcji i ulepszeń, w tym format() funkcjonować. W tym artykule przyjrzymy się, jak std::format można wykorzystać do formatowania ciągów znaków w C++ 20.

C++20 – std::format

std::format to nowa funkcja wprowadzona w C++ 20, która umożliwia formatowanie ciągów znaków poprzez zastąpienie symboli zastępczych wewnątrz ciągu formatującego wartościami podanych argumentów. Symbole zastępcze są reprezentowane za pomocą {} wewnątrz ciągu formatującego.



Składnia:

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

Typ zwrotu: Funkcja zwraca std::string zawierający sformatowane wyjście.

W C++20 wprowadzono nowy typ danych o nazwie std::string_view, który zapewnia widok bazowego ciągu znaków. Działa podobnie do wskaźnika na ciąg znaków, ale ma dodatkowe funkcje bezpieczeństwa i wygody. Args… reprezentuje parametr variadic, co oznacza, że ​​funkcja std::format może przyjmować zmienną liczbę argumentów dowolnego typu.

Przykłady C++ 20 – std::format

Przykład 1:

Poniższy kod ilustruje sposób użycia std::format do sformatowania ciągu znaków za pomocą symboli zastępczych dla zmiennych.



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

>

połączyć ciąg Java

>

Wyjście

My name is John and my favorite number is 42>

W powyższym przykładzie mamy ciąg formatujący zawierający dwa symbole zastępcze, {}. Wartości zmiennych name i num przekazujemy do funkcji std::format, która zastępuje symbole zastępcze wartościami zmiennych. Wynikowy ciąg znaków jest przechowywany w zmiennej formatted_str, która jest następnie drukowana na konsoli.

Przykład 2:

W poniższym przykładzie zrozumiemy argumenty pozycyjne za pomocą 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;> }>

>

>

Wyjście

My name is John and my favorite number is 42>

W powyższym przykładzie odwróciliśmy kolejność argumentów w funkcji std::format i dodaliśmy indeksy pozycyjne do symboli zastępczych. Pierwszy symbol zastępczy zostaje zastąpiony wartością num, a drugi symbol zastępczy wartością nazwy.

Przykład 3:

W poniższym przykładzie zobaczymy, jak std::format udostępnia wiele opcji formatowania ciągów znaków, gdzie możemy użyć symboli zastępczych {}, aby określić opcje formatowania dla każdego argumentu.

C++


wzorce projektowe w Javie



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

>

>

Wyjście

My name is Jo and pi is 3.14>

W powyższym przykładzie dodaliśmy opcje formatowania do symboli zastępczych. Pierwszy symbol zastępczy jest sformatowany jako liczba zmiennoprzecinkowa z dwoma miejscami po przecinku, a drugi symbol zastępczy jest sformatowany jako ciąg o maksymalnej szerokości dwóch znaków.

Wniosek

std::format obsługuje szeroką gamę opcji formatowania, w tym możliwość formatowania typów zdefiniowanych przez użytkownika. Jest bardziej wydajna niż poprzednie opcje formatowania ciągów w C++, takie jak sprintf i printf.