Пространства имён
Варианты
Действия

std::vformat

Материал из cppreference.com
< cpp‎ | utility‎ | format
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Библиотека форматирования
Функции форматирования
(C++20)
(C++20)
vformat
(C++20)
(C++20)
Концепты форматирования
Форматировщик
(C++20)
Аргументы форматирования
(C++20) (устарело в C++26)
Ошибка формата
 
Определено в заголовочном файле <format>
(1) (начиная с C++20)
(2) (начиная с C++20)
std::string vformat( const std::locale& loc,
                     std::string_view fmt, std::format_args args );
(3) (начиная с C++20)
std::wstring vformat( const std::locale& loc,
                      std::wstring_view fmt, std::wformat_args args );
(4) (начиная с C++20)

Форматирует аргументы, хранящиеся в args, в соответствии со строкой формата fmt и возвращает результат в виде строки. Если присутствует, loc используется для форматирования, зависящего от локали.

Содержание

[править] Параметры

fmt объект, представляющий строку формата. Строка формата состоит из
  • обычных символов (кроме { и }), которые копируются в вывод без изменений,
  • управляющих последовательностей {{ и }}, которые заменяются на { и } соответственно в выводе, и
  • заменяемых полей.

Каждое поле замены имеет следующий формат:

{ идентификатор-аргумента (необязательно) } (1)
{ идентификатор-аргумента (необязательно) : спецификатор-формата } (2)
1) поле замены без указания формата
2) поле замены со спецификацией формата
идентификатор-аргумента указывает индекс аргумента в args, значение которого должно использоваться для форматирования; если он опущен, аргументы используются по порядку.

идентификаторы-аргументов в строке формата должны присутствовать все или быть опущены. Смешение ручной и автоматической индексации является ошибкой.

спецификатор-формата спецификация формата, определённая специализацией std::formatter для соответствующего аргумента.
args аргументы для форматирования
loc std::locale используется для форматирования, зависящего от локали

[править] Возвращаемое значение

Строковый объект, содержащий форматированный результат.

[править] Исключения

Генерирует std::format_error, если fmt не является допустимой строкой формата для предоставленных аргументов, или std::bad_alloc при ошибке выделения памяти. Также распространяет любые исключения, вызванные операциями форматирования или итерирования.

[править] Пример

#include <format>
#include <iostream>
 
template<typename... Args>
inline void println(const std::format_string<Args...> fmt, Args&&... args)
{
    std::cout << std::vformat(fmt.get(), std::make_format_args(args...)) << '\n';
}
 
int main()
{
    println("{}{} {}{}", "Привет", ',', "C++", -1 + 2 * 3 * 4);
}

Вывод:

Привет, C++23

[править] Смотрите также