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

std::basic_format_string, std::format_string, std::wformat_string

Материал из 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)
(C++20)
(C++20)
Концепты форматирования
Форматировщик
(C++20)
Аргументы форматирования
basic_format_stringformat_stringwformat_string
(C++20)(C++20)(C++20)
(C++20) (устарело в C++26)
Ошибка формата
 
Определено в заголовочном файле <format>
template< class CharT, class... Args >
struct basic_format_string;
(1) (начиная с C++20)
template< class... Args >
using format_string = basic_format_string<char, std::type_identity_t<Args>...>;
(2) (начиная с C++20)
template< class... Args >
using wformat_string = basic_format_string<wchar_t, std::type_identity_t<Args>...>;
(3) (начиная с C++20)

Шаблонный класс std::basic_format_string оборачивает std::basic_string_view и выполняет проверку строки формата во время компиляции во время создания.

Содержание

[править] Функции-элементы

(конструктор)
создаёт basic_format_string, вызывая ошибку компиляции, если аргумент не является строкой формата
(public функция-элемент)
get
возвращает обёрнутую строку
(public функция-элемент)

std::basic_format_string::basic_format_string

template< class T >
consteval basic_format_string( const T& s );

Создаёт объект basic_format_string, который хранит представление строки s. Если аргумент не является константой времени компиляции или его невозможно проанализировать как строку формата для типов аргументов форматирования Args, создание некорректно.

Эта перегрузка участвует в разрешении перегрузки, только если const T& моделирует std::convertible_to<std::basic_string_view<CharT>>.

Параметры

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

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

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

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

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

std::basic_format_string::get

constexpr std::basic_string_view<CharT> get() const noexcept;

Возвращает сохранённое строковое представление.

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

Шаблоны псевдонимы format_string и wformat_string используют std::type_identity_t для запрета вывода аргументов шаблона. Обычно, когда они появляются в качестве параметра функции, их аргументы шаблона выводятся из аргументов других функций.

template< class... Args >
std::string format( std::format_string<Args...> fmt, Args&&... args );
 
auto s = format("{} {}", 1.0, 2);
// Вызывает format<double, int>. Аргументы выводятся из 1.0, 2
// Из-за использования type_identity_t в format_string при выводе
// аргумента шаблона не учитывается тип строки формата.

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

[править] Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
WG не указан C++20 для этого средства нет видимого пользователем имени представлено имя basic_format_string