名前空間
変種
操作

std::time_get

From cppreference.com
< cpp‎ | locale
 
 
 
 
 
ヘッダー <locale> で定義
template<

    class CharT,
    class InputIt = std::istreambuf_iterator<CharT>

> class time_get;

クラステンプレートstd::time_getは、日付と時刻の解析ルールをカプセル化します。I/Oマニピュレータstd::get_timeは、I/Oストリームのロケールのstd::time_getファセットを使用して、テキスト入力をstd::tmオブジェクトに変換します。

cpp/locale/time basecpp/locale/locale/facetstd-time get-inheritance.svg

継承図

std::time_getの特殊化が標準ライブラリによって提供されることが保証されていない場合(下記参照)、そのメンバ関数(コンストラクタとデストラクタを除く)の動作は指定された通りに保証されません。

目次

[編集] 特殊化

標準ライブラリは、以下の特殊化を提供することが保証されています(これらは あらゆるロケールオブジェクトによって実装される必要があります)。

ヘッダー <locale> で定義
std::time_get<char> 日付と時刻のナロー文字列表現を解析します。
std::time_get<wchar_t> 日付と時刻のワイド文字列表現を解析します。

さらに、標準ライブラリは、以下の型要件を満たすすべての特殊化を提供することも保証されています。

  • CharTcharwchar_tのいずれかであり、
  • InputItLegacyInputIterator の要件を満たす必要があります。

[編集] ネストされた型

定義
char_type CharT
iter_type InputIt

[編集] データメンバ

メンバ 説明
std::locale::id id [static] ファセットの識別子

[編集] メンバ関数

新しいtime_getファセットを構築します。
(public member function)
time_getファセットを破棄します。
(protected メンバ関数)
do_date_orderを呼び出します。
(publicメンバ関数) [編集]
do_get_timeを呼び出します。
(publicメンバ関数) [編集]
do_get_dateを呼び出します。
(publicメンバ関数) [編集]
do_get_weekdayを呼び出します。
(publicメンバ関数) [編集]
do_get_monthnameを呼び出します。
(publicメンバ関数) [編集]
do_get_yearを呼び出します。
(publicメンバ関数) [編集]
(C++11)
do_getを呼び出します。
(publicメンバ関数) [編集]

[編集] protectedメンバ関数

日、月、年の優先順序を取得します。
(virtual protectedメンバ関数) [編集]
[virtual]
入力ストリームから時、分、秒を抽出します。
(virtual protectedメンバ関数) [編集]
[virtual]
入力ストリームから月、日、年を抽出します。
(virtual protectedメンバ関数) [編集]
入力ストリームから曜日名を取得します。
(virtual protectedメンバ関数) [編集]
入力ストリームから月名を取得します。
(virtual protectedメンバ関数) [編集]
[virtual]
入力ストリームから年を取得します。
(virtual protectedメンバ関数) [編集]
[virtual] (C++11)
指定されたフォーマットに従って、入力ストリームから日付/時刻コンポーネントを抽出します。
(virtual protectedメンバ関数) [編集]

std::time_baseから継承

ネストされた型

定義
dateorder 日付順序の列挙型。no_orderdmymdyymdydmの値を定義します。

[編集]

注意: clangを選択すると出力が確認できます。libstdc++は%b指定子を正しく実装していません: バグ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)
指定されたフォーマットの日付/時刻の値を構文解析する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)