std::chrono::from_stream (std::chrono::tai_time)
template<class CharT, class Traits, class Duration, class Alloc =std::allocator<CharT>> std::basic_istream<CharT, Traits>& | (C++20以上) | |
書式文字列 fmt
に従って入力ストリーム is
から時点 tp
へのパースを試みます。
UnformattedInputFunction として動作しますが、 is.gcount() への影響は未規定です。 sentry オブジェクトの構築および確認の後、書式文字列 fmt
に従って入力ストリーム is
から tp
へのパースを試みます。 有効な時点のパースに失敗した場合は is.setstate(std::ios_base::failbit) が呼ばれ、 tp
は変更されません。
書式指定子 %Z
が使用され、パースに成功した場合、 abbrev
がヌルでなければ、パースされた値が *abbrev に代入されます。 書式指定子 %z
またはその修飾付きの変種が使用され、パースに成功した場合、 offset
がヌルでなければ、パースされた値が *offset に代入され、 tp
に代入される前に、パースされたオフセットがパースされたタイムスタンプから減算されます。
[編集] 書式文字列
書式文字列は0個以上の変換指定子および通常の文字から構成されます。 通常の文字は、ホワイトスペース文字および終端のヌル文字を除き、入力ストリームから同じ1文字にマッチします。 または、ストリームの次の文字と比較して等しくなければ、関数は失敗します。
ホワイトスペース文字は入力ストリームの0個以上のホワイトスペース文字にマッチします。
無修飾の変換指定子は %
文字で始まり、その後に指定子の動作を決める文字が続きます。 変換指定子には、 %
文字の後に修飾文字 E
または O
が挿入される、修飾付きの形式を持つものもあります。 変換指定子には、 %
文字の後に正の10進整数 (以下の表では N
として表されます) として与えられる、幅のパラメータを持つものもあります。 各変換指定子はマッチした文字を以下の表に従って日付および時刻の一部として解釈します。
書式文字列中の、 %
で始まるけれども以下の変換指定子のいずれにも一致しない文字シーケンスは、通常の文字として解釈されます。
書式文字列で指定されたすべての内容をパースすることに失敗した場合、または完全な結果を得るには不十分な情報しかパースできなかった場合、またはパースした結果の情報が矛盾していた場合、 is.setstate(std::ios_base::failbit) が呼ばれます。
以下の変換指定子が利用できます。
変換指定子 | 説明 | |
---|---|---|
%% | % 文字にマッチします。 | |
%n | 1個のホワイトスペース文字にマッチします。 | |
%t | 0個以上のホワイトスペース文字にマッチします。 | |
年 | ||
%C %NC %EC %OC | 10進数として世紀をパースします。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
%y %Ny %Ey %Oy | 年の10進数の下2桁をパースします。 世紀が (%C などによって) 指定されていない場合、範囲 [69, 99] の値は1969〜1999年を表すと推定され、範囲 [00, 68] の値は2000〜2068年を表すと推定されます。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
%Y %NY %EY | 年を10進数としてパースします。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は4です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
月 | ||
%b %B %h | ロケールの完全形または省略形の月名をパースします。 大文字小文字は区別しません。 | |
%m %Nm %Om | 月を10進数としてパースします (1月が 1 です)。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
日 | ||
%d %Nd %Ed %e %Ne %Ee | 日を10進数としてパースします。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
曜日 | ||
%a %A | ロケールの完全形または省略形の曜日名を解釈します。 大文字小文字は区別しません。 | |
%u %Nu %Ou | ISO の曜日を10進数 (1〜7) としてパースします。 月曜日が 1 です。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は1です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
%w %Nw %Ow | 曜日を10進数 (0〜6) としてパースします。 日曜日が 0 です。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は1です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
ISO 8601 の週基準の年 | ||
ISO 8601 では、週は月曜日から始まり、年の最初の週は、以下の要件を満たさなければなりません。
| ||
%g %Ng | ISO 8601 の週基準の年の10進数の下2桁をパースします。 幅 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 | 週番号を10進数としてパースします。 その年の最初の日曜日が週番号01の最初の日です。 同じ年のそれより前の日は週番号00です。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 | |
%W %NW | 週番号を10進数としてパースします。 その年の最初の月曜日が週番号01の最初の日です。 同じ年のそれより前の日は週番号00です。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 | |
日付 | ||
%D | "%m/%d/%y" と同等です。 | |
%F %NF | "%Y-%m-%d" と同等です。 幅を指定した場合、それは %Y にのみ適用されます。 | |
%x %Ex | ロケールの日付表現をパースします。 修飾付きのコマンド | |
時刻 | ||
%H %NH %OH | 時 (24時間表記) を10進数としてパースします。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
%I %NI | 時 (12時間表記) を10進数としてパースします。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 | |
%M %NM %OM | 分を10進数として解釈します。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は2です。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
%S %NS %OS | 秒を10進数として解釈します。 幅 N は読み込む最大文字数を指定します。 デフォルトの幅は、 Duration が std::chrono::seconds に変換可能であれば2、そうでなければ Duration の10進精度によって決定され、フィールドは、ロケールによって決定される小数点文字 (もし出現すれば) を持つ、固定小数点表記の long double として解釈されます。 先頭のゼロは許容されますが必須ではありません。 修飾付きのコマンド | |
%p | 午前/午後に相当するロケールの表現を解釈します。 書式文字列内でコマンド %I が %p より前になければなりません。 | |
%R | "%H:%M" と同等です。 | |
%T | "%H:%M:%S" と同等です。 | |
%r | ロケールの12時間表記の時刻表現をパースします。 | |
%X %EX | ロケールの時刻表現をパースします。 修飾付きのコマンド | |
その他 | ||
%c %Ec | ロケールの日付時刻表現をパースします。 修飾付きのコマンド | |
%z %Ez %Oz | [+|-]hh[mm] 形式の UTC からのオフセットをパースします。 例えば、 -0430 は UTC より4時間30分遅れていることを表し、 04 は UTC より4時間進んでいることを表します。 修飾付きのコマンド | |
%Z | A 〜Z 、a 〜z 、0 〜9 、- 、+ 、_ 、/ の文字のみを含む最長の文字シーケンスを取って、タイムゾーンの名前または省略形をパースします。 |
[編集] 戻り値
is
。
[編集] 関連項目
(C++20) | ストリームから chrono オブジェクトをパースします (関数テンプレート) |