std::time_get
來自 cppreference.com
定義於標頭檔案 <locale> |
||
template< class CharT, |
||
類模板 std::time_get
封裝了日期和時間解析規則。I/O 操縱符 std::get_time 使用 I/O 流的本地化設定中的 std::time_get
facet 將文字輸入轉換為 std::tm 物件。
繼承圖
如果標準庫不保證提供 std::time_get
特化(見下文),則其成員函式(建構函式和解構函式除外)的行為不保證符合規範。
目錄 |
[編輯] 特化
標準庫保證提供以下特化(它們 要求由任何區域設定物件實現)
定義於標頭檔案
<locale> | |
std::time_get<char> | 解析日期和時間的窄字串表示 |
std::time_get<wchar_t> | 解析日期和時間的寬字串表示 |
此外,標準庫還保證提供滿足以下型別要求的每個特化:
-
CharT
是 char 和 wchar_t 之一,並且 -
InputIt
必須滿足 LegacyInputIterator 的要求。
[編輯] 巢狀型別
型別 | 定義 |
char_type
|
CharT
|
iter_type
|
InputIt
|
[編輯] 資料成員
成員 | 描述 |
std::locale::id id [static] |
facet 的識別符號 |
[編輯] 成員函式
構造一個新的 time_get facet(公開成員函式) | |
析構一個 time_get facet(受保護成員函式) | |
呼叫 do_date_order (public member function) | |
呼叫 do_get_time (public member function) | |
呼叫 do_get_date (public member function) | |
呼叫 do_get_weekday (public member function) | |
呼叫 do_get_monthname (public member function) | |
呼叫 do_get_year (public member function) | |
(C++11) |
呼叫 do_get (public member function) |
[編輯] 保護成員函式
[virtual] |
獲取日期、月份和年份的首選順序 (virtual protected member function) |
[virtual] |
從輸入流中提取時、分、秒 (virtual protected member function) |
[virtual] |
從輸入流中提取月、日、年 (virtual protected member function) |
[virtual] |
從輸入流中提取星期幾的名稱 (virtual protected member function) |
[virtual] |
從輸入流中提取月份名稱 (virtual protected member function) |
[virtual] |
從輸入流中提取年份 (virtual protected member function) |
[virtual] (C++11) |
根據指定格式從輸入流中提取日期/時間元件 (virtual protected member function) |
[編輯] 示例
注意:選擇 clang 觀察輸出。libstdc++ 沒有正確實現 %b 說明符:bug 78714。
執行此程式碼
#include <iomanip> #include <iostream> #include <locale> #include <sstream> int main() { std::tm t = {}; std::istringstream ss("2011-Februar-18 23:12:34"); ss.imbue(std::locale("de_DE.utf-8")); ss >> std::get_time(&t, "%Y-%b-%d %H:%M:%S"); if (ss.fail()) std::cout << "Parse failed\n"; else std::cout << std::put_time(&t, "%c") << '\n'; }
可能的輸出
Sun Feb 18 23:12:34 2011
[編輯] 參閱
將 std::tm 的內容格式化為字元序列輸出 (類模板) | |
(C++11) |
解析指定格式的日期/時間值 (函式模板) |