名稱空間
變體
操作

std::chrono::from_stream (std::chrono::year_month)

來自 cppreference.com
< cpp‎ | chrono‎ | year_month
 
 
 
 
定義於標頭檔案 <chrono>
template< class CharT, class Traits, class Alloc = std::allocator<CharT> >

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

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

嘗試將輸入流 is 根據格式字串 fmt 解析為 std::chrono::year_month 型別物件 ym

行為類似於 UnformattedInputFunction,除了它對 is.gcount() 具有未指定的副作用。構造並檢查 sentry 物件後,嘗試將輸入流 is 根據格式字串 fmt 解析到 ym 中。如果解析失敗,未能解碼出有效的 year_month,則會呼叫 is.setstate(std::ios_base::failbit),且 ym 不會被修改。

如果使用了格式說明符 %Z 並且成功解析,則解析到的值會賦給 *abbrev(如果 abbrev 不為空)。如果使用了格式說明符 %z 或其修改變體併成功解析,則解析到的值會賦給 *offset(如果 offset 不為空)。

目錄

[編輯] 引數

is - 一個輸入流
fmt - 格式字串(見下文)
ym - 用於儲存解析結果的物件
abbrev - 如果不為 null,則指向一個物件,該物件將儲存與 %Z 說明符對應時區縮寫或名稱
offset - 如果不為 null,則指向一個物件,該物件將儲存與 %z 說明符對應的 UTC 偏移量

[編輯] 格式字串

格式字串由零個或多個轉換說明符和普通字元組成。每個普通字元(空白字元和終止空字元除外)匹配輸入流中的一個相同字元,如果流中的下一個字元不相等,則導致函式失敗。

每個空白字元匹配輸入流中的零個或多個空白字元。

每個未修改的轉換說明符都以 % 字元開頭,後跟一個確定說明符行為的字元。一些轉換說明符具有修改形式,其中在 % 字元之後插入 EO 修飾符字元。一些轉換說明符具有修改形式,其中在 % 字元之後插入以正十進位制整數(如下所示為 N)給出的寬度引數。每個轉換說明符都會使匹配的字元根據下表被解釋為日期和時間型別的一部分。

格式字串中以%開頭但與下面任一轉換說明符不匹配的字元序列被解釋為普通字元。

如果 from_stream 未能解析格式字串指定的所有內容,或者解析的資訊不足以指定完整結果,或者解析結果顯示矛盾的資訊,則會呼叫 is.setstate(std::ios_base::failbit)

以下轉換說明符可用

轉換
說明符
解釋
%% 匹配字面值%字元。
%n 匹配一個空白字元。
%t 匹配零個或一個空白字元。
%C
%NC
%EC
將世紀解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%EC解釋區域設定的世紀替代表示。

%y
%Ny
%Ey
%Oy
解析年份的最後兩位十進位制數字。如果未另外指定世紀(例如使用 %C),則 [69, 99] 範圍內的值被假定為指 1969 年至 1999 年,而 [00, 68] 範圍內的值被假定為指 2000 年至 2068 年。寬度 N 指定要讀取的最大字元數。預設寬度為 2。允許但不要求前導零。

修改後的命令%Ey%Oy解釋區域設定的替代表示。

%Y
%NY
%EY
將年份解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為4。允許但不要求前導零。

修改後的命令%EY解釋區域設定的替代表示。

%b
%B
%h
解析區域設定的完整或縮寫的不區分大小寫的月份名稱。
%m
%Nm
%Om
將月份解析為十進位制數(一月為1)。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%Om解釋區域設定的替代表示。

%d
%Nd
%Od
%e
%Ne
%Oe
將月份中的日期解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%Od%Oe解釋區域設定的替代表示。

星期幾
%a
%A
解析區域設定的完整或縮寫的不區分大小寫的星期幾名稱。
%u
%Nu
將ISO星期幾解析為十進位制數(1-7),其中星期一為1。寬度N指定要讀取的最大字元數。預設寬度為1。允許但不要求前導零。
%w
%Nw
%Ow
將星期幾解析為十進位制數(0-6),其中星期日為0。寬度N指定要讀取的最大字元數。預設寬度為1。允許但不要求前導零。

修改後的命令%Ow解釋區域設定的替代表示。

ISO 8601 基於周的年份

在ISO 8601中,周以星期一開始,一年的第一週必須滿足以下要求

  • 包含1月4日
  • 包含一年中的第一個星期四
%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。允許但不要求前導零。

修改後的命令%OU解釋區域設定的替代表示。

%W
%NW
%OW
將年份的週數解析為十進位制數字。一年中的第一個星期一是第 01 周的第一天。在此之前的同年日期屬於第 00 周。寬度 N 指定要讀取的最大字元數。預設寬度為 2。允許但不要求前導零。

修改後的命令%OW解釋區域設定的替代表示。

日期
%D 等效於"%m/%d/%y"
%F
%NF
等效於"%Y-%m-%d"。如果指定了寬度,則僅應用於%Y
%x
%Ex
解析區域設定的日期表示。

修改後的命令%Ex解釋區域設定的替代日期表示。

日間時間
%H
%NH
%OH
將小時(24小時制)解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%OH解釋區域設定的替代表示。

%I
%NI
%OI
將小時(12小時制)解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%OI解釋區域設定的替代表示。

%M
%NM
%OM
將分鐘解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%OM解釋區域設定的替代表示。

%S
%NS
%OS
將秒解析為十進位制數。寬度N指定要讀取的最大字元數。預設寬度為2。允許但不要求前導零。

修改後的命令%OS解釋區域設定的替代表示。

%p 解析區域設定的12小時制時鐘相關的AM/PM指示符的等效項。
%R 等效於"%H:%M"
%T 等效於"%H:%M:%S"
%r 解析區域設定的12小時制時間。
%X
%EX
解析區域設定的時間表示。

修改後的命令%EX解釋區域設定的替代時間表示。

雜項
%c
%Ec
解析區域設定的日期和時間表示。

修改後的命令%Ec解釋區域設定的替代日期和時間表示。

%z
%Ez
%Oz
解析UTC偏移量,格式為[+|-]hh[mm]。例如,-0430表示比UTC晚4小時30分鐘,04表示比UTC早4小時。

修改後的命令%Ez%Oz解析格式[+|-]h[h][:mm](即,小時和分鐘之間需要一個:,並且小時的前導零是可選的)。

%Z 解析時區縮寫或名稱,其被視為僅包含字元 AZaz09-+_/ 的最長字元序列。

[編輯] 返回值

is

[edit] 參見

(C++20)
從流解析 chrono 物件
(函式模板) [編輯]