std:: runtime_format
|
Определено в заголовке
<format>
|
||
|
/*runtime-format-string*/
<
char
>
runtime_format
(
std::
string_view
fmt
)
noexcept
;
|
(1) | (начиная с C++26) |
|
/*runtime-format-string*/
<
wchar_t
>
runtime_format
(
std::
wstring_view
fmt
)
noexcept
;
|
(2) | (начиная с C++26) |
Возвращает объект, который хранит строку формата времени выполнения, непосредственно применимую в пользовательских функциях форматирования и может быть неявно преобразован в
std::basic_format_string
.
Содержание |
Параметры
| fmt | - | строковое представление |
Возвращаемое значение
Объект, содержащий строку формата времени выполнения типа, предназначенного только для экспозиции:
Шаблон класса
runtime-format-string
<CharT>
|
template
<
class
CharT
>
struct /*runtime-format-string*/ ; |
( только для демонстрации* ) | |
Члены-объекты
Возвращаемый объект содержит демонстрационный нестатический член данных
str
типа
std::basic_string_view<CharT>
.
Конструкторы и операторы присваивания
|
/*runtime-format-string*/
(
std::
basic_string_view
<
CharT
>
s
)
noexcept
;
|
(1) | |
|
/*runtime-format-string*/
(
const
/*runtime-format-string*/
&
)
=
delete
;
|
(2) | |
|
/*runtime-format-string*/
&
operator
=
(
const
/*runtime-format-string*/
&
)
=
delete
;
|
(3) | |
str
значением
s
.
Примечания
Поскольку возвращаемый тип
runtime_format
не является ни копируемым, ни перемещаемым, попытка передачи
runtime_fmt
как glvalue блокирует конструкцию
std::basic_format_string
, что приводит к ошибочности программы. Для конструирования
std::basic_format_string
с помощью
runtime_format
, возвращаемое значение
runtime_format
передаётся напрямую в
std::basic_format_string
как prvalue, где гарантируется пропуск копирования.
auto runtime_fmt = std::runtime_format("{}"); auto s0 = std::format(runtime_fmt, 1); // ошибка auto s1 = std::format(std::move(runtime_fmt), 1); // всё ещё ошибка auto s2 = std::format(std::runtime_format("{}"), 1); // корректно
| Макрос тестирования возможностей | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_format
|
202311L
|
(C++26) | Строки форматирования времени выполнения |
Пример
#include <format> #include <print> #include <string> #include <string_view> int main() { std::print("Hello {}!\n", "world"); std::string fmt; for (int i{}; i != 3; ++i) { fmt += "{} "; // формирует строку форматирования std::print("{} : ", fmt); std::println(std::runtime_format(fmt), "alpha", 'Z', 3.14, "unused"); } }
Вывод:
Hello world!
{} : alpha
{} {} : alpha Z
{} {} {} : alpha Z 3.14
Смотрите также
|
(C++20)
|
сохраняет форматированное представление аргументов в новой строке
(шаблон функции) |
|
(C++20)
|
нетемплейтный вариант
std::format
с использованием type-erased представления аргументов
(функция) |
|
(C++20)
(C++20)
(C++20)
|
шаблон класса, выполняющий проверки форматной строки во время компиляции при создании
(шаблон класса) |