std::formatter<std::chrono::sys_info>
定義於標頭檔案 <chrono> |
||
template< class CharT > struct formatter<std::chrono::sys_info, CharT>; |
(C++20 起) | |
std::formatter 的特化,它定義了 std::chrono::sys_info 的格式化規則。
std::formatter 特化通常不直接訪問,而是透過格式化函式使用。
[編輯] 格式說明
格式規範的形式為
fill-and-align (可選) width (可選) precision (可選) L (可選) chrono-spec (可選) |
|||||||||
fill-and-align、width 和 precision 的含義與標準格式說明中的含義相同。precision 僅對錶示型別 Rep
為浮點型別的 std::chrono::duration 型別有效,否則將丟擲 std::format_error。
用於格式化的區域設定確定如下:
- 如果格式規範中不存在
L
,則使用預設的 "C" 區域設定, - 否則,如果傳遞給格式化函式,則使用 std::locale 所表示的區域設定,
- 否則(存在
L
但沒有將 std::locale 傳遞給格式化函式),則使用全域性區域設定。
如果(普通或寬)字串字面量編碼是 Unicode 編碼形式,並且區域設定屬於實現定義的區域設定集合之一,則每個依賴於區域設定的替換都將執行,如同替換字元序列已轉換為字面量編碼。
chrono-spec 由一個或多個轉換說明符和普通字元(除了 {
、}
和 %
)組成。一個 chrono-spec 必須以轉換說明符開頭。所有普通字元都原樣寫入輸出。每個未修改的轉換說明符以 %
字元開頭,後跟一個確定說明符行為的字元。一些轉換說明符具有修改形式,其中在 %
字元之後插入 E
或 O
修飾符字元。每個轉換說明符都將替換為輸出中如下所述的相應字元。
除非另有說明,如果 chrono-spec 為空,則 chrono 物件將格式化,如同將其流式傳輸到型別為 std::basic_ostringstream<CharT> 的物件 os
中,並使用格式化區域設定(std::locale::classic()、傳入的 std::locale 物件和 std::locale::global() 之一)填充,並將 os.str() 複製到輸出緩衝區,並根據格式說明符進行額外的填充和調整。
以下格式說明符可用:
轉換 說明符 |
解釋 | |
---|---|---|
%%
|
寫入字面量 % 字元。 | |
%n
|
寫入換行符。 | |
%t
|
寫入水平製表符。 | |
時區 | ||
%z %Ez %Oz
|
以 ISO 8601 格式寫入與 UTC 的偏移量。例如 -0430 表示比 UTC 晚 4 小時 30 分鐘。如果偏移量為零,則使用 +0000 。修改後的命令 | |
%Z
|
寫入時區縮寫。 |
以下說明符可識別,但會丟擲 std::format_error
轉換 說明符 |
解釋 | |
---|---|---|
年 | ||
%C %EC
|
使用向下取整除法寫入年份除以 100 的結果。如果結果是一個十進位制數字,則在其前面加上 0。 修改後的命令 | |
%y %Oy %Ey
|
寫入年份的最後兩位十進位制數字。如果結果是一位數字,則在其前面加上 0。 修改後的命令 修改後的命令 | |
%Y %EY
|
將年份作為十進位制數字寫入。如果結果小於四位數字,則在其前面用 0 填充到四位數字。 修改後的命令 | |
月 | ||
%b %h
|
寫入區域設定的縮寫月份名稱。 | |
%B
|
寫入區域設定的完整月份名稱。 | |
%m %Om
|
將月份作為十進位制數字寫入(一月為 01 )。如果結果是一個數字,則在其前面加上 0。修改後的命令 | |
日 | ||
%d %Od
|
將月份中的日期作為十進位制數字寫入。如果結果是一個十進位制數字,則在其前面加上 0。 修改後的命令 | |
%e %Oe
|
將月份中的日期作為十進位制數字寫入。如果結果是一個十進位制數字,則在其前面加上一個空格。 修改後的命令 | |
星期幾 | ||
%a
|
寫入區域設定的縮寫工作日名稱。 | |
%A
|
寫入區域設定的完整工作日名稱。 | |
%u %Ou
|
將 ISO 工作日作為十進位制數字寫入 (1-7),其中星期一為 1 。修改後的命令 | |
%w %Ow
|
將工作日作為十進位制數字寫入 (0-6),其中星期日為 0 。修改後的命令 | |
ISO 8601 基於周的年份 | ||
在ISO 8601中,周以星期一開始,一年的第一週必須滿足以下要求
| ||
%g
|
寫入 ISO 8601 基於周的年份的最後兩位十進位制數字。如果結果是一位數字,則在其前面加上 0。 | |
%G
|
將 ISO 8601 基於周的年份作為十進位制數字寫入。如果結果小於四位數字,則在其前面用 0 填充到四位數字。 | |
%V %OV
|
將 ISO 8601 年份的週數作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。 修改後的命令 | |
年份中的周/天 | ||
%j
|
將年份中的日期作為十進位制數字寫入(1 月 1 日為 001 )。如果結果小於三位數字,則在其前面用 0 填充到三位數字。 | |
%U %OU
|
將年份的週數作為十進位制數字寫入。年份的第一個星期日是第 01 周的第一天。在此之前的同年日期屬於第 00 周。如果結果是一個數字,則在其前面加上 0。 修改後的命令 | |
%W %OW
|
將年份的週數作為十進位制數字寫入。年份的第一個星期一是第 01 周的第一天。在此之前的同年日期屬於第 00 周。如果結果是一個數字,則在其前面加上 0。 修改後的命令 | |
日期 | ||
%D
|
等效於"%m/%d/%y" 。 | |
%F
|
等同於 "%Y-%m-%d" 。 | |
%x %Ex
|
寫入區域設定的日期表示。 修改後的命令 | |
日間時間 | ||
%H %OH
|
將小時(24 小時制)作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。 修改後的命令 | |
%I %OI
|
將小時(12 小時制)作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。 修改後的命令 | |
%M %OM
|
將分鐘作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。 修改後的命令 | |
%S %OS
|
將秒作為十進位制數字寫入。如果秒數小於 10,則結果前面加上 0。 如果輸入的精度不能精確表示為秒,則格式為固定格式的十進位制浮點數,精度與輸入精度匹配(如果轉換為浮點十進位制秒不能在 18 位小數以內完成,則為微秒精度)。小數點字元根據區域設定進行本地化。 修改後的命令 | |
%p
|
寫入區域設定中與 12 小時制相關聯的 AM/PM 表示。 | |
%R
|
等效於"%H:%M" 。 | |
%T
|
等效於"%H:%M:%S" 。 | |
%r
|
寫入區域設定的 12 小時制時間。 | |
%X %EX
|
寫入區域設定的時間表示。 修改後的命令 | |
持續時間計數 | ||
%Q
|
寫入持續時間的滴答計數,即透過 count() 獲得的值。 | |
%q
|
寫入持續時間的單位字尾,如 operator<<() 中指定。 | |
雜項 | ||
%c %Ec
|
寫入區域設定的日期和時間表示。 修改後的命令 |
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 另請參閱
(C++20) |
將引數的格式化表示儲存在新字串中 (函式模板) |