std::chrono:: from_stream (std::chrono::sys_time)
|
template
<
class
CharT,
class
Traits,
class
Duration,
class
Alloc
=
std::
allocator
<
CharT
>
>
std::
basic_istream
<
CharT, Traits
>
&
|
(начиная с C++20) | |
Пытается разобрать входной поток is в точку времени tp в соответствии со строкой формата fmt .
Ведет себя как UnformattedInputFunction , за исключением того, что оказывает неопределенное влияние на is. gcount ( ) . После создания и проверки сторожевого объекта предпринимает попытку разобрать входной поток is в tp в соответствии со строкой формата fmt . Если разбор не может декодировать корректную временную точку, is. setstate ( std:: ios_base :: failbit ) вызывается, и tp не изменяется.
Если спецификатор формата
%Z
используется и успешно разбирается, разобранное значение присваивается
*
abbrev
, если
abbrev
не является нулевым. Если спецификатор формата
%z
или его модифицированный вариант используется и успешно разбирается, разобранное значение присваивается
*
offset
, если
offset
не является нулевым, и разобранное смещение будет вычтено из разобранной временной метки перед тем, как разница будет присвоена
tp
.
Содержание |
Параметры
| is | - | входной поток |
| fmt | - | строка формата (см. ниже) |
| tp | - | объект временной точки для хранения результата парсинга |
| abbrev | - |
если не null, указатель на объект, который будет содержать аббревиатуру или название часового пояса, соответствующие спецификатору
%Z
|
| offset | - |
если не null, указатель на объект, который будет содержать смещение от UTC, соответствующее спецификатору
%z
|
Строка формата
Строка формата состоит из нуля или более спецификаторов преобразования и обычных символов. Каждый обычный символ, за исключением пробельных символов и завершающего нулевого символа, соответствует одному идентичному символу из входного потока или вызывает сбой функции, если следующий символ в потоке не совпадает.
Каждый пробельный символ соответствует нулю или более пробельным символам во входном потоке.
Каждый немодифицированный спецификатор преобразования начинается с символа
%
, за которым следует символ, определяющий поведение спецификатора. Некоторые спецификаторы преобразования имеют модифицированную форму, в которой модифицирующий символ
E
или
O
вставляется после символа
%
. Некоторые спецификаторы преобразования имеют модифицированную форму, в которой параметр ширины, заданный в виде положительного десятичного целого числа (обозначенного как
N
ниже), вставляется после символа
%
. Каждый спецификатор преобразования приводит к интерпретации соответствующих символов как частей типов даты и времени в соответствии с приведенной ниже таблицей.
Последовательность символов в строке формата, которая начинается с
%
, но не соответствует ни одному из спецификаторов преобразования ниже, интерпретируется как обычные символы.
Если
from_stream
не удается разобрать все, указанное строкой формата, или если разобрано недостаточно информации для определения полного результата, или если при разборе выявлена противоречивая информация,
is.
setstate
(
std::
ios_base
::
failbit
)
вызывается.
Доступны следующие спецификаторы преобразования:
|
Спецификатор
преобразования |
Объяснение | |
|---|---|---|
%%
|
Соответствует символу
%
в буквальном значении.
|
|
%n
|
Соответствует одному пробельному символу. | |
%t
|
Соответствует нулю или одному пробельному символу. | |
| Год | ||
%C
%
N
C
%EC
|
Анализирует век как десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
%y
%
N
y
%Ey
%Oy
|
Анализирует последние две десятичные цифры года. Если век не указан иным образом (например, с помощью %C), значения в диапазоне [69, 99] считаются относящимися к годам с 1969 по 1999, а значения в диапазоне [00, 68] считаются относящимися к годам с 2000 по 2068. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули допускаются, но не обязательны.
Модифицированные команды
|
|
%Y
%
N
Y
%EY
|
Разбирает год как десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 4. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
| Месяц | ||
%b
%B
%h
|
Разбирает полное или сокращённое название месяца в локали без учёта регистра. | |
%m
%
N
m
%Om
|
Преобразует месяц в десятичное число (январь - это
1
). Ширина
N
определяет максимальное количество считываемых символов. Ширина по умолчанию равна 2. Ведущие нули допускаются, но не обязательны.
Модифицированная команда
|
|
| День | ||
%d
%
N
d
%Od
%e
%
N
e
%Oe
|
Преобразует день месяца в десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированные команды
|
|
| День недели | ||
%a
%A
|
Разбирает полное или сокращённое название дня недели в локали без учёта регистра. | |
%u
%
N
u
|
Анализирует номер дня недели по ISO в виде десятичного числа (1-7), где понедельник соответствует
1
. Ширина
N
задает максимальное количество считываемых символов. Ширина по умолчанию равна 1. Ведущие нули допускаются, но не обязательны.
|
|
%w
%
N
w
%Ow
|
Преобразует день недели в десятичное число (0-6), где воскресенье соответствует
0
. Ширина
N
определяет максимальное количество считываемых символов. Ширина по умолчанию равна 1. Ведущие нули допускаются, но не обязательны.
Модифицированная команда
|
|
| ISO 8601 недельный год | ||
|
В стандарте ISO 8601 недели начинаются с понедельника, и первая неделя года должна удовлетворять следующим требованиям:
|
||
%g
%
N
g
|
Анализирует последние две десятичные цифры года по системе недель ISO 8601. Ширина N определяет максимальное количество символов для чтения. Ширина по умолчанию составляет 2. Ведущие нули разрешены, но не обязательны. | |
%G
%
N
G
|
Парсит год на основе недель ISO 8601 в виде десятичного числа. Ширина N определяет максимальное количество символов для чтения. Ширина по умолчанию составляет 4. Ведущие нули разрешены, но не обязательны. | |
%V
%
N
V
|
Парсит неделю года по стандарту ISO 8601 как десятичное число. Ширина N определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны. | |
| Неделя/день года | ||
%j
%
N
j
|
Преобразует день года в десятичное число (1 января соответствует
1
). Ширина
N
задает максимальное количество считываемых символов. Ширина по умолчанию составляет 3. Ведущие нули допускаются, но не обязательны.
|
|
%U
%
N
U
%OU
|
Парсит номер недели года как десятичное число. Первое воскресенье года является первым днем недели 01. Дни того же года до этого относятся к неделе 00. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
%W
%
N
W
%OW
|
Парсит номер недели года как десятичное число. Первый понедельник года является первым днём недели 01. Дни того же года до этого относятся к неделе 00. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
| Дата | ||
%D
|
Эквивалентно
"%m/%d/%y"
.
|
|
%F
%
N
F
|
Эквивалентно
"%Y-%m-%d"
. Если указана ширина, она применяется только к
%Y
.
|
|
%x
%Ex
|
Анализирует представление даты в текущей локали.
Модифицированная команда
|
|
| Время суток | ||
%H
%
N
H
%OH
|
Анализирует час (24-часовой формат) как десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
%I
%
N
I
%OI
|
Анализирует час (12-часовой формат) как десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
%M
%
N
M
%OM
|
Разбирает минуты как десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2. Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
%S
%
N
S
%OS
|
Парсит секунды как десятичное число. Ширина
N
определяет максимальное количество символов для чтения. Ширина по умолчанию равна 2, если
Duration
конвертируем в
std::chrono::seconds
, в противном случае она определяется десятичной точностью
Duration
и поле интерпретируется как long double в фиксированном формате, с символом десятичной точки, определяемым локалью (если встретится). Ведущие нули разрешены, но не обязательны.
Модифицированная команда
|
|
%p
|
Анализирует локальные эквиваленты обозначений AM/PM, связанных с 12-часовым форматом времени. | |
%R
|
Эквивалентно
"%H:%M"
.
|
|
%T
|
Эквивалентно
"%H:%M:%S"
.
|
|
%r
|
Анализирует 12-часовой формат времени в локали. | |
%X
%EX
|
Анализирует представление времени в локали.
Модифицированная команда
|
|
| Разное | ||
%c
%Ec
|
Анализирует представление даты и времени в локали.
Модифицированная команда
|
|
%z
%Ez
%Oz
|
Анализирует смещение от UTC в формате
[+|-]hh[mm]
. Например,
-0430
означает 4 часа 30 минут позади UTC, а
04
означает 4 часа впереди UTC.
Модифицированные команды
|
|
%Z
|
Анализирует аббревиатуру или название часового пояса, принимая самую длинную последовательность символов, которая содержит только символы
A
через
Z
,
a
через
z
,
0
через
9
,
-
,
+
,
_
, и
/
.
|
|
Возвращаемое значение
is
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
парсит
chrono
объект из потока
(шаблон функции) |