std::chrono::from_stream (std::chrono::year_month_day)
定義於標頭檔案 <chrono> |
||
template< class CharT, class Traits, class Alloc = std::allocator<CharT> > std::basic_istream<CharT, Traits>& |
(C++20 起) | |
嘗試根據格式字串 fmt 將輸入流 is 解析為 std::chrono::year_month_day ymd。
行為類似於 UnformattedInputFunction,但對 is.gcount() 的影響未指定。構造並檢查哨兵物件後,嘗試根據格式字串 fmt 將輸入流 is 解析為 ymd。如果解析未能解碼出有效的 year_month_day
,則呼叫 is.setstate(std::ios_base::failbit),並且 ymd 不會被修改。
如果使用格式說明符 %Z
併成功解析,則將解析到的值賦給 *abbrev(如果 abbrev 不為空)。如果使用格式說明符 %z
或其修改變體併成功解析,則將解析到的值賦給 *offset(如果 offset 不為空)。
目錄 |
[編輯] 引數
is | - | 一個輸入流 |
fmt | - | 格式字串(見下文) |
ymd | - | 用於儲存解析結果的物件 |
abbrev | - | 如果不為 null,則指向一個物件,該物件將儲存與 %Z 說明符對應時區縮寫或名稱 |
offset | - | 如果不為 null,則指向一個物件,該物件將儲存與 %z 說明符對應的 UTC 偏移量 |
[編輯] 格式字串
格式字串由零個或多個轉換說明符和普通字元組成。每個普通字元,除了空白字元和終止空字元,都與輸入流中的一個相同字元匹配,如果流中的下一個字元不相等,則導致函式失敗。
每個空白字元匹配輸入流中的零個或多個空白字元。
每個未修改的轉換說明符都以 %
字元開頭,後跟一個決定說明符行為的字元。某些轉換說明符具有修改形式,其中在 %
字元後插入 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日為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
|
解析區域設定的12小時制時鐘相關的AM/PM指示符的等效項。 | |
%R
|
等效於"%H:%M" 。 | |
%T
|
等效於"%H:%M:%S" 。 | |
%r
|
解析區域設定的12小時制時間。 | |
%X %EX
|
解析區域設定的時間表示。 修改後的命令 | |
雜項 | ||
%c %Ec
|
解析區域設定的日期和時間表示。 修改後的命令 | |
%z %Ez %Oz
|
解析UTC偏移量,格式為[+|-]hh[mm] 。例如,-0430 表示比UTC晚4小時30分鐘,04 表示比UTC早4小時。修改後的命令 | |
%Z
|
解析時區縮寫或名稱,它被認為是僅包含字元 A 到 Z 、a 到 z 、0 到 9 、- 、+ 、_ 和 / 的最長字元序列。 |
[編輯] 返回值
is
[edit] 參見
(C++20) |
從流解析 chrono 物件(函式模板) |