std::chrono::from_stream (std::chrono::year)
定義於標頭檔案 <chrono> |
||
template< class CharT, class Traits, class Alloc = std::allocator<CharT> > std::basic_istream<CharT, Traits>& |
(C++20 起) | |
嘗試根據格式字串fmt將輸入流is解析為std::chrono::year y。
其行為類似於UnformattedInputFunction,除了它對is.gcount()有未指定的效應。在構造並檢查哨兵物件之後,它嘗試根據格式字串fmt將輸入流is解析為y。如果解析未能解碼出有效的year
,則呼叫is.setstate(std::ios_base::failbit),並且y不被修改。
如果使用了格式說明符%Z
併成功解析,則解析後的值將賦值給*abbrev,如果abbrev不為空。如果使用了格式說明符%z
或其修改形式併成功解析,則解析後的值將賦值給*offset,如果offset不為空。
目錄 |
[edit] 引數
is | - | 一個輸入流 |
fmt | - | 格式字串(見下文) |
y | - | 用於儲存解析結果的物件 |
abbrev | - | 如果不為 null,則指向一個物件,該物件將儲存與 %Z 說明符對應時區縮寫或名稱 |
offset | - | 如果不為 null,則指向一個物件,該物件將儲存與 %z 說明符對應的 UTC 偏移量 |
[edit] 格式字串
格式字串由零個或多個轉換說明符和普通字元組成。每個普通字元(空白字元和終止空字元除外)與輸入流中的一個相同字元匹配,如果流中的下一個字元不相等,則導致函式失敗。
每個空白字元匹配輸入流中的零個或多個空白字元。
每個未修改的轉換說明符以%
字元開頭,後跟一個決定說明符行為的字元。一些轉換說明符具有修改形式,其中在%
字元之後插入一個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 ,- ,+ ,_ 和/ 字元。 |
[edit] 返回值
is
[edit] 參見
(C++20) |
從流解析 chrono 物件(函式模板) |