名前空間
変種
操作

std::time_get

提供: cppreference.com
< cpp‎ | locale
 
 
 
 
ヘッダ <locale> で定義
template<

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

> class time_get;

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

cpp/locale/time basecpp/locale/locale/facetstd-time get-inheritance.svg
画像の詳細

継承図

目次

[編集] 型の要件

-
InputItLegacyInputIterator の要件を満たさなければなりません。

[編集] 特殊化

2つのスタンドアロンな (ロケール非依存な) 完全特殊化と2つの部分特殊化が標準ライブラリによって提供されます。

ヘッダ <locale> で定義
std::time_get<char> 日付と時間のナロー文字列表現を解析します
std::time_get<wchar_t> 日付と時間のワイド文字列表現を解析します
std::time_get<char, InputIt> カスタム入力イテレータを用いて日付と時間のナロー文字列表現を解析します
std::time_get<wchar_t, InputIt> カスタム入力イテレータを用いて日付と時間のワイド文字列表現を解析します

さらに、 C++ のプログラム中で構築されたすべてのロケールオブジェクトは、これらの特殊化の独自の (ロケール固有の) バージョンを実装します。

[編集] メンバ型

メンバ型 定義
char_type CharT
iter_type InputIt

[編集] メンバ関数

新しい time_get ファセットを構築します
(パブリックメンバ関数)
time_get ファセットを破棄します
(プロテクテッドメンバ関数)
do_date_order を呼びます
(パブリックメンバ関数) [edit]
do_get_time を呼びます
(パブリックメンバ関数) [edit]
do_get_date を呼びます
(パブリックメンバ関数) [edit]
do_get_weekday を呼びます
(パブリックメンバ関数) [edit]
do_get_monthname を呼びます
(パブリックメンバ関数) [edit]
do_get_year を呼びます
(パブリックメンバ関数) [edit]
(C++11)
do_get を呼びます
(パブリックメンバ関数) [edit]

[編集] メンバオブジェクト

static std::locale::id id
ロケールの id
(パブリックメンバオブジェクト)

[編集] プロテクテッドメンバ関数

日、月、年の推奨順序を取得します
(仮想プロテクテッドメンバ関数) [edit]
[仮想]
入力ストリームから時、分、秒を抽出します
(仮想プロテクテッドメンバ関数) [edit]
[仮想]
入力ストリームから月、日、年を抽出します
(仮想プロテクテッドメンバ関数) [edit]
入力ストリームから曜日の名前を抽出します
(仮想プロテクテッドメンバ関数) [edit]
入力ストリームから月の名前を抽出します
(仮想プロテクテッドメンバ関数) [edit]
[仮想]
入力ストリームから年を抽出します
(仮想プロテクテッドメンバ関数) [edit]
[仮想] (C++11)
指定された書式に従って、入力ストリームから日付時刻のコンポーネントを抽出します
(仮想プロテクテッドメンバ関数) [edit]

std::time_base から継承

定義
dateorder no_orderdmymdyymd および ydm を定義する、日付の順序の列挙型

[編集]

注: 出力を観察するには clang を使用してください。 libstdc++ は %b 指定子を正しく実装していません (bug 78714)。

#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
 
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

[編集] 関連項目

文字シーケンスとして出力するために struct std::tm の内容をフォーマットします
(クラステンプレート) [edit]
(C++11)
指定された書式の日付/時刻の値をパースします
(関数テンプレート) [edit]