名前空間
変種
操作

std::chrono::from_stream (std::chrono::tai_time)

From cppreference.com
< cpp‎ | chrono‎ | tai clock
 
 
 
 
template< class CharT, class Traits, class Duration, class Alloc = std::allocator<CharT> >

std::basic_istream<CharT, Traits>&
    from_stream( std::basic_istream<CharT, Traits>& is, const CharT* fmt,
                 std::chrono::tai_time<Duration>& tp,
                 std::basic_string<CharT, Traits, Alloc>* abbrev = nullptr,

                 std::chrono::minutes* offset = nullptr );
(C++20以降)

is の入力ストリームを、フォーマット文字列 fmt に従って、時刻点 tp に解析しようと試みます。

UnformattedInputFunction のように動作しますが、is.gcount() への影響は未規定です。 sentry オブジェクトの構築とチェックの後、フォーマット文字列 fmt に従って、入力ストリーム istp に解析しようとします。解析が有効な時刻点をデコードできなかった場合、is.setstate(std::ios_base::failbit) が呼び出され、tp は変更されません。

フォーマット指定子 %Z が使用され、解析に成功した場合、abbrev が null でない場合、解析された値が *abbrev に代入されます。フォーマット指定子 %z またはその修飾バリアントが使用され、解析に成功した場合、offset が null でない場合、解析された値が *offset に代入され、解析されたオフセットは、その差が tp に代入される前に、解析されたタイムスタンプから減算されます。

目次

[編集] パラメータ

is - 入力ストリーム
fmt - フォーマット文字列(下記参照)
tp - 解析結果を保持する時刻点オブジェクト
abbrev - null でない場合、%Z 指定子に対応するタイムゾーンの略称または名前を保持するオブジェクトへのポインタ
offset - null でない場合、%z 指定子に対応する UTC からのオフセットを保持するオブジェクトへのポインタ

[編集] フォーマット文字列

フォーマット文字列は、0個以上の変換指定子と通常の文字で構成されます。空白文字と終端のヌル文字を除く各通常の文字は、入力ストリームの同一の文字1つと一致するか、ストリームの次の文字が一致しない場合は関数が失敗します。

各空白文字は、入力ストリームの0個以上の空白文字と一致します。

各未変更の変換指定子は、% 文字で始まり、その後に指定子の動作を決定する文字が続きます。一部の変換指定子には、% 文字の後に E または O 修飾子文字が挿入される変更形式があります。一部の変換指定子には、% 文字の後に正の10進数整数(以下、N と表示)で与えられる幅パラメータが挿入される変更形式があります。各変換指定子は、一致した文字を以下の表に従って日付および時刻の型の一部として解釈します。

% で始まり、以下の変換指定子のいずれにも一致しないフォーマット文字列内の文字シーケンスは、通常の文字として解釈されます。

from_stream がフォーマット文字列で指定されたすべてを解析できなかった場合、または完全な結果を指定するのに十分な情報が解析されなかった場合、または解析によって矛盾する情報が明らかにされた場合、is.setstate(std::ios_base::failbit) が呼び出されます。

以下の変換指定子が利用可能です。

変換
指定子
説明
%% リテラルの % 文字に一致します。
%n 1つの空白文字に一致します。
%t 0個または1個の空白文字に一致します。
%C
%NC
%EC
世紀を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %EC は、ロケールの世紀の代替表現を解釈します。

%y
%Ny
%Ey
%Oy
年の下2桁を10進数として解析します。世紀が他に指定されていない場合(例: %C)、範囲 [69, 99] の値は1969年から1999年、範囲 [00, 68] の値は2000年から2068年と推定されます。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %Ey および %Oy は、ロケールの代替表現を解釈します。

%Y
%NY
%EY
年を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 4 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %EY は、ロケールの代替表現を解釈します。

%b
%B
%h
ロケールの完全または省略形の、大文字小文字を区別しない月名を解析します。
%m
%Nm
%Om
月を10進数として解析します(1月は 1)。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %Om は、ロケールの代替表現を解釈します。

%d
%Nd
%Od
%e
%Ne
%Oe
月の日を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %Od および %Oe は、ロケールの代替表現を解釈します。

曜日
%a
%A
ロケールの完全または省略形の、大文字小文字を区別しない曜日の名前を解析します。
%u
%Nu
ISO曜日を10進数(1〜7)として解析します。月曜日が 1 です。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 1 です。先頭のゼロは許可されますが、必須ではありません。
%w
%Nw
%Ow
曜日を10進数(0〜6)として解析します。日曜日が 0 です。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 1 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %Ow は、ロケールの代替表現を解釈します。

ISO 8601週番号ベースの年

ISO 8601では、週は月曜日から始まり、その年の最初の週は次の要件を満たす必要があります。

  • 1月4日を含む
  • その年の最初の木曜日を含む
%g
%Ng
ISO 8601週番号ベースの年の下2桁を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。
%G
%NG
ISO 8601週番号ベースの年を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 4 です。先頭のゼロは許可されますが、必須ではありません。
%V
%NV
ISO 8601年の週番号を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。
週/年の日
%j
%Nj
年の日を10進数として解析します(1月1日は 1)。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 3 です。先頭のゼロは許可されますが、必須ではありません。
%U
%NU
%OU
年の週番号を10進数として解析します。その年の最初の日曜日は週 01 の最初の日です。それ以前の同じ年の日数は週 00 に含まれます。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %OU は、ロケールの代替表現を解釈します。

%W
%NW
%OW
年の週番号を10進数として解析します。その年の最初月曜日は週 01 の最初の日です。それ以前の同じ年の日数は週 00 に含まれます。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %OW は、ロケールの代替表現を解釈します。

日付
%D "%m/%d/%y" と同等です。
%F
%NF
"%Y-%m-%d" と同等です。幅が指定されている場合、それは %Y にのみ適用されます。
%x
%Ex
ロケールの日付表現を解析します。

変更されたコマンド %Ex は、ロケールの代替日付表現を解釈します。

時刻
%H
%NH
%OH
時間(24時間制)を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %OH は、ロケールの代替表現を解釈します。

%I
%NI
%OI
時間(12時間制)を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %OI は、ロケールの代替表現を解釈します。

%M
%NM
%OM
分を10進数として解析します。幅 N は読み取る最大文字数を指定します。デフォルトの幅は 2 です。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %OM は、ロケールの代替表現を解釈します。

%S
%NS
%OS
2番目の引数を10進数として解析します。幅 N は読み取る最大文字数を指定します。Durationstd::chrono::seconds に変換可能な場合、デフォルトの幅は 2 です。それ以外の場合は、Duration の10進精度によって決定され、フィールドはロケールによって決定される小数点文字(見つかった場合)を持つ固定フォーマットの long double として解釈されます。先頭のゼロは許可されますが、必須ではありません。

変更されたコマンド %OS は、ロケールの代替表現を解釈します。

%p 12時間制に関連付けられた午前/午後指定子のロケールでの等価なものを解析します。
%R "%H:%M" と同等です。
%T "%H:%M:%S" と同等です。
%r ロケールの12時間制時刻を解析します。
%X
%EX
ロケールの時刻表現を解析します。

変更されたコマンド %EX は、ロケールの代替時刻表現を解釈します。

その他
%c
%Ec
ロケールの日付と時刻の表現を解析します。

変更されたコマンド %Ec は、ロケールの代替日付と時刻の表現を解釈します。

%z
%Ez
%Oz
[+|-]hh[mm] の形式で UTC からのオフセットを解析します。例えば、-0430 は UTC より4時間30分遅れていることを指し、04 は UTC より4時間進んでいることを指します。

変更されたコマンド %Ez および %Oz は、[+|-]h[h][:mm] の形式を解析します(つまり、時間と分の間に : が必要であり、時間の先頭のゼロを省略可能にします)。

%Z タイムゾーンの省略形または名前を解析します。これは、A から Za から z0 から 9-+_、および / の文字のみを含む最長の文字シーケンスとして取得されます。

[編集] 戻り値

is

[編集]

[編集] 関連項目

(C++20)
ストリームから chrono オブジェクトを解析する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)