Namespaces
Variants

std:: vformat_to

From cppreference.net
Определено в заголовке <format>
template < class OutputIt >
OutputIt vformat_to ( OutputIt out, std:: string_view fmt, std:: format_args args ) ;
(1) (начиная с C++20)
template < class OutputIt >
OutputIt vformat_to ( OutputIt out, std:: wstring_view fmt, std:: wformat_args args ) ;
(2) (начиная с C++20)
template < class OutputIt >

OutputIt vformat_to ( OutputIt out, const std:: locale & loc,

std:: string_view fmt, std:: format_args args ) ;
(3) (начиная с C++20)
template < class OutputIt >

OutputIt vformat_to ( OutputIt out, const std:: locale & loc,

std:: wstring_view fmt, std:: wformat_args args ) ;
(4) (начиная с C++20)

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

Пусть CharT будет decltype ( fmt ) :: char_type ( char для перегрузок (1,3) , wchar_t для перегрузок (2,4) ).

Эти перегрузки участвуют в разрешении перегрузки только если OutputIt удовлетворяет концепции std:: output_iterator < const CharT & > .

OutputIt должен моделировать (удовлетворять семантическим требованиям) концепции std:: output_iterator < const CharT & > , и std:: formatter < Ti, CharT > должен удовлетворять требованиям Formatter для любого Ti в типе аргументов. В противном случае поведение не определено.

Содержание

Параметры

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

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

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

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

format-spec - спецификация формата, определяемая специализацией std::formatter для соответствующего аргумента. Не может начинаться с } .

(since C++23)
(since C++26)
  • Для других форматируемых типов спецификация формата определяется пользовательскими специализациями formatter .
args - аргументы для форматирования
loc - std::locale , используемый для локале-специфичного форматирования

Возвращаемое значение

Итератор за концом выходного диапазона.

Исключения

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

Пример

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
P2216R3 C++20 type of args is parameterized on OutputIt not parameterized
Перевод:
DR Применяется к Поведение в опубликованной версии Корректное поведение
P2216R3 C++20 тип args параметризован по OutputIt не параметризован

Смотрите также