std::chrono::parse
| Определено в заголовочном файле <chrono>
|
||
template< class CharT, class Parsable > /* не определено */ parse( const CharT* fmt, Parsable& tp ); |
(1) | (начиная с C++20) |
template< class CharT, class Traits, class Alloc, class Parsable > /* не определено */ parse( const std::basic_string<CharT, Traits, Alloc>& fmt, Parsable& tp ); |
(2) | (начиная с C++20) |
template< class CharT, class Traits, class Alloc, class Parsable > /* не определено */ parse( const CharT* fmt, Parsable& tp, std::basic_string<CharT, Traits, Alloc>& abbrev ); |
(3) | (начиная с C++20) |
template< class CharT, class Traits, class Alloc, class Parsable > /* не определено */ parse( const std::basic_string<CharT, Traits, Alloc>& fmt, Parsable& tp, std::basic_string<CharT, Traits, Alloc>& abbrev ); |
(4) | (начиная с C++20) |
template< class CharT, class Parsable > /* не определено */ parse( const CharT* fmt, Parsable& tp, std::chrono::minutes& offset ); |
(5) | (начиная с C++20) |
template< class CharT, class Traits, class Alloc, class Parsable > /* не определено */ parse( const std::basic_string<CharT, Traits, Alloc>& fmt, Parsable& tp, std::chrono::minutes& offset ); |
(6) | (начиная с C++20) |
template< class CharT, class Traits, class Alloc, class Parsable > /* не определено */ parse( const CharT* fmt, Parsable& tp, std::basic_string<CharT, Traits, Alloc>& abbrev, std::chrono::minutes& offset ); |
(7) | (начиная с C++20) |
template< class CharT, class Traits, class Alloc, class Parsable > /* не определено */ parse( const std::basic_string<CharT, Traits, Alloc>& fmt, Parsable& tp, std::basic_string<CharT, Traits, Alloc>& abbrev, std::chrono::minutes& offset ); |
(8) | (начиная с C++20) |
Возвращает объект manip неопределённого типа, такой, что для заданного объекта std::basic_istream<CharT, Traits> is выражение is >> manip вызывает from_stream (неквалифицированный, чтобы включить зависимый от аргумента поиск) следующим образом:
from_stream(is, fmt, tp)from_stream(is, fmt.c_str(), tp)from_stream(is, fmt, tp, std::addressof(abbrev))from_stream(is, fmt.c_str(), tp, std::addressof(abbrev))from_stream(is, fmt, tp, static_cast<std::basic_string<CharT, Traits, Alloc>*>(nullptr), &offset)from_stream(is, fmt.c_str(), tp, static_cast<std::basic_string<CharT, Traits, Alloc>*>(nullptr), &offset)from_stream(is, fmt, tp, std::addressof(abbrev), &offset)from_stream(is, fmt.c_str(), tp, std::addressof(abbrev), &offset).Выражение is >> manip представляет собой lvalue типа std::basic_istream<CharT, Traits> со значением is.
Эти перегрузки участвуют в разрешении перегрузки, только если соответствующее выражение from_stream имеет правильный формат.
Реализации рекомендуются для того, чтобы затруднить использование потенциально висячих ссылок на строку формата, например, сделав возвращаемые типы неперемещаемыми и запретив operator>> принимать lvalue возвращаемых типов.
Параметры
| fmt | — | строка формата (смотрите ниже) |
| tp | — | объект для хранения результата синтаксического анализа |
| abbrev | — | строка для хранения аббревиатуры или имени часового пояса, соответствующего спецификатору %Z
|
| offset | — | длительность для представления смещения от UTC, соответствующего спецификатору %z
|
Строка формата
Строка формата состоит из нуля или более спецификаторов преобразования и обычных символов. Каждый обычный символ, за исключением пробельных символов и завершающего нулевого символа, соответствует одному идентичному символу из входного потока или вызывает сбой функции, если следующий символ в потоке не равен при сравнении.
Каждый пробельный символ соответствует нулю или более пробельным символам во входном потоке.
Каждый немодифицированный спецификатор преобразования начинается с символа %, за которым следует символ, определяющий поведение спецификатора. Некоторые спецификаторы преобразования имеют модифицированную форму, в которой символ модификатора E или O вставляется после символа %. Некоторые спецификаторы преобразования имеют модифицированную форму, в которой параметр ширины, заданный в виде положительного десятичного целого числа (показанного ниже как N) вставляется после символа %. Каждый спецификатор преобразования заставляет совпадающие символы интерпретироваться как части типов даты и времени в соответствии с таблицей ниже.
Последовательность символов в строке формата, которая начинается с %, но не соответствует ни одному из приведённых ниже спецификаторов преобразования, интерпретируется как обычные символы.
Если from_stream не удаётся проанализировать всё, что указано в строке формата, или если анализируется недостаточная информация для указания полного результата, или если анализ раскрывает противоречивую информацию, вызывается is.setstate(std::ios_base::failbit).
Доступны следующие спецификаторы преобразования:
| Спецификатор преобразования |
Объяснение | |
|---|---|---|
%%
|
Соответствует литеральному символу %.
| |
%n
|
Соответствует одному пробельному символу. | |
%t
|
Соответствует нулю или одному пробельному символу. | |
| Год | ||
%C %NC %EC
|
Разбирает век как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
%y %Ny %Ey %Oy
|
Анализирует две последние десятичные цифры года. Если век не указан иным образом (например, с помощью %C), предполагается, что значения в диапазоне [69, 99] относятся к 1969-1999 годам, а значения в диапазоне [00, 68] относятся к с 2000-2068 годам. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированные команды | |
%Y %NY %EY
|
Разбирает год как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 4. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
| Месяц | ||
%b%B%h
|
Анализирует полное или сокращённое название месяца локали без учёта регистра. | |
%m%Nm%Om
|
Разбирает месяц как десятичное число (январь равен 1). Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
| День | ||
%d%Nd%Od%e%Ne%Oe
|
Разбирает день месяца как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированные команды | |
| День недели | ||
%a%A
|
Анализирует полное или сокращённое название дня недели локали без учёта регистра. | |
%u%Nu
|
Разбирает день недели ISO как десятичное число (1-7), где понедельник равен 1. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 1. Начальные нули разрешены, но не обязательны.
| |
%w%Nw%Ow
|
Разбирает день недели как десятичное число (0-6), где воскресенье равно 0. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 1. Начальные нули разрешены, но не обязательны.
Модифицированная команда | |
| Основанный на неделях год ISO 8601 | ||
|
В ISO 8601 недели начинаются с понедельника, и первая неделя года должна соответствовать следующим требованиям:
| ||
%g%Ng
|
Анализирует последние две десятичные цифры года основанного на неделях в соответствии с ISO 8601. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны. | |
%G%NG
|
Разбирает основанный на неделях год ISO 8601 как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 4. Ведущие нули разрешены, но не обязательны. | |
%V%NV
|
Разбирает неделю года по ISO 8601 как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны. | |
| Неделя/день года | ||
%j%Nj
|
Разбирает день года как десятичное число (1 января равно 1). Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 3. Начальные нули разрешены, но не обязательны.
| |
%U%NU%OU
|
Разбирает номер недели года как десятичное число. Первое воскресенье года это первый день недели 01. Дни того же года до этого относятся к неделе 00. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
%W%NW%OW
|
Разбирает номер недели года как десятичное число. Первый понедельник года это первый день недели 01. Дни того же года до этого относятся к неделе 00. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
| Дата | ||
%D
|
Эквивалент "%m/%d/%y".
| |
%F%NF
|
Эквивалент "%Y-%m-%d". Если указана ширина, она применяется только к %Y.
| |
%x%Ex
|
Анализирует представление даты локали.
Модифицированная команда | |
| Время суток | ||
%H%NH%OH
|
Разбирает час (24-часовой формат) как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
%I%NI%OI
|
Разбирает час (12-часовой формат) как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
%M%NM%OM
|
Разбирает минуты как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда | |
%S%NS%OS
|
Разбирает секунду как десятичное число. Ширина N указывает максимальное количество символов для чтения. Ширина по умолчанию равна 2. Начальные нули разрешены, но не обязательны.
Модифицированная команда | |
%p
|
Анализирует эквивалент локали обозначений AM/PM, связанных с 12-часовым форматом времени. | |
%R
|
Эквивалент "%H:%M".
| |
%T
|
Эквивалент "%H:%M:%S".
| |
%r
|
Анализирует 12-часовое время локали. | |
%X%EX
|
Анализирует представление времени локали.
Модифицированная команда | |
| Разное | ||
%c%Ec
|
Анализирует представление даты и времени локали.
Модифицированная команда | |
%z%Ez%Oz
|
Анализирует смещение от UTC в формате [+|-]чч[мм]. Например, -0430 означает отставание от UTC на 4 часа 30 минут, а 04 означает опережение UTC на 4 часа.
Модифицированные команды | |
%Z
|
Разбирает аббревиатуру или название часового пояса, взятое как самая длинная последовательность символов, содержащая только символы от A до Z, от a до z, от 0 до 9, -, +, _ и /.
| |
Пример
| Этот раздел не завершён Причина: нет примера |
Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 3554 | C++20 | отсутствовали перегрузки для последовательностей простых символьных типов с нулевым завершением |
добавлено |
Смотрите также
| анализирует sys_time из потока в соответствии с предоставленным форматом (шаблон функции) | |
| анализирует utc_time из потока в соответствии с предоставленным форматом (шаблон функции) | |
| анализирует tai_time из потока в соответствии с предоставленным форматом (шаблон функции) | |
| анализирует gps_time из потока в соответствии с предоставленным форматом (шаблон функции) | |
| анализирует file_time из потока в соответствии с предоставленным форматом (шаблон функции) | |
| анализирует local_time из потока в соответствии с предоставленным форматом (шаблон функции) | |
(C++20) |
разбирает year из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++20) |
разбирает month из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++20) |
разбирает day из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++20) |
разбирает weekday из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++20) |
анализирует month_day из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++20) |
разбирает year_month из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++20) |
разбирает year_month_day из потока в соответствии с предоставленным форматом (шаблон функции) |
(C++11) |
анализирует значение даты/времени указанного формата (шаблон функции) |