std::basic_format_string, std::format_string, std::wformat_string
Определён в заголовочном файле <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, который будет использоваться функциями форматирования.
Конструктор std::basic_format_string выполняет проверку форматной строки во время компиляции, если только аргумент конструктора не возвращён функцией std::dynamic_format(начиная с C++26).
Функции-члены
|
(конструктор) | создаёт basic_format_string; если аргумент не является форматной строкой, возникает ошибка компиляции (открытая функция-член) |
|
get | возвращает обёрнутую строку (открытая функция-член) |
std::basic_format_string::basic_format_string
template< class T > consteval basic_format_string( const T& s ); | (1) | |
basic_format_string( /* dynamic-format-string */<CharT> s ) noexcept; | (2) | (начиная с C++26) |
basic_format_string, хранящий представление строки s. Если аргумент не является константой времени компиляции или не может быть разобран как форматная строка для типов форматируемых аргументов Args, программа некорректна.std::convertible_to<std::basic_string_view<CharT>>.basic_format_string, хранящий представление строки s, возвращённой функцией std::dynamic_format. При создании проверка форматной строки не выполняется.Параметры
| s | - | объект, представляющий форматную строку. Форматная строка состоит из
Каждое поле подстановки имеет следующий формат:
|
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);
// Calls format<double, int>. Args are deduced from 1.0, 2
// Due to the use of type_identity_t in format_string, template argument deduction
// does not consider the type of the format string.
Пример
Отчёты об ошибках стандарта
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение согласно опубликованной версии | Исправленное поведение |
|---|---|---|---|
| P2508R1 | C++20 | для этой возможности не было общедоступного имени | имя basic_format_string стало доступно |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/format/basic_format_string