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

std::basic_format_parse_context

Материал из 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_parse_contextformat_parse_contextwformat_parse_context
(C++20)(C++20)(C++20)
Аргументы форматирования
(C++20) (устарело в C++26)
Ошибка формата
 
Определено в заголовочном файле <format>
template< class CharT >
class basic_format_parse_context;
(начиная с C++20)

Предоставляет доступ к состоянию анализа строки формата, состоящему из анализируемого диапазона строки формата и счётчика аргументов для автоматического индексирования.

Экземпляр std::basic_format_parse_context передаётся в Formatter при анализе спецификации формата.

Предусмотрено несколько определений типов для распространённых типов символов:

Определены в заголовочном файле <format>
Тип Определение
std::format_parse_context std::basic_format_parse_context<char>
std::wformat_parse_context std::basic_format_parse_context<wchar_t>

Содержание

[править] Типы элементы

Тип Определение
char_type CharT
iterator std::basic_string_view<CharT>::const_iterator
const_iterator std::basic_string_view<CharT>::const_iterator

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

(конструктор)
создаёт экземпляр std::basic_format_parse_context из строки формата и количества аргументов
(public функция-элемент)
operator=
[удалено]
std::basic_format_parse_context не копируется
(public функция-элемент)
begin
возвращает итератор на начало диапазона строки формата
(public функция-элемент)
end
возвращает итератор на конец диапазона строки формата
(public функция-элемент)
advance_to
перемещает начальный итератор на заданную позицию
(public функция-элемент)
next_arg_id
переходит в режим автоматического индексирования и возвращает индекс следующего аргумента
(public функция-элемент)
check_arg_id
переходит в режим ручной индексации, проверяет, находится ли указанный индекс аргумента в диапазоне
(public функция-элемент)

std::basic_format_parse_context::basic_format_parse_context

constexpr explicit basic_format_parse_context( std::basic_string_view<CharT> fmt,
                                               std::size_t num_args = 0 ) noexcept;
(1)
basic_format_parse_context( const basic_format_parse_context& ) = delete;
(2)
1) Создаёт экземпляр std::basic_format_parse_context. Инициализирует диапазон строк формата в [fmt.begin()fmt.end()) и счётчик аргументов в num_args.
2) Конструктор копирования удалён. std::basic_format_parse_context нельзя копировать.

std::basic_format_parse_context::begin

constexpr const_iterator begin() const noexcept;

Возвращает итератор на начала диапазона строки формата.

std::basic_format_parse_context::end

constexpr const_iterator end() const noexcept;

Возвращает итератор на конец диапазона строки формата.

std::basic_format_parse_context::advance_to

constexpr void advance_to( const_iterator it );

Устанавливает начало диапазона строки формата в it. После вызова advance_to() последующие вызовы begin() вернут копию it.

Поведение не определено, если end() недостижим из it.

std::basic_format_parse_context::next_arg_id

constexpr std::size_t next_arg_id();

Переходит в режим автоматического индексирования аргументов и возвращает индекс следующего аргумента, начиная с 0.

Если *this уже перешёл в режим индексации аргументов вручную, генерируется std::format_error.

Если индекс следующего аргумента больше или равен значению num_args, указанному в конструкторе, вызов не является базовым константным выражением.

std::basic_format_parse_context::check_arg_id

constexpr void check_arg_id( std::size_t id );

Входит в режим индексации аргументов вручную.

Если *this уже перешёл в режим автоматической индексации аргументов, генерируется std::format_error.

Если id больше или равно num_args, указанному в конструкторе, вызов не является базовым константным выражением.

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

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

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

Номер Применён Поведение в стандарте Корректное поведение
LWG 3825 C++20 check_arg_id имеет проверку аргумента id времени компиляции,
но next_arg_id не имеет
добавлено