名前空間
変種
操作

std::time_put_byname

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

    class CharT,
    class OutputIt = std::ostreambuf_iterator<CharT>

> class time_put_byname : public std::time_put<CharT, OutputIt>

std::time_put_byname は、構築時に指定されたロケールの時刻と日付のフォーマット規則をカプセル化する std::time_put ファセットです。

目次

[編集] Specializations

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

  • CharTcharwchar_tのいずれかであり、
  • OutputItLegacyOutputIterator の要件を満たさなければなりません。

[編集] Nested types

定義
char_type CharT
iter_type OutputIt

[編集] Member functions

(コンストラクタ)
新しいtime_put_bynameファセットを構築します。
(public member function) [編集]
(デストラクタ)
time_put_bynameファセットを破棄します。
(protected member function) [編集]

std::time_put_byname::time_put_byname

explicit time_put_byname( const char* name, std::size_t refs = 0 );
explicit time_put_byname( const std::string& name, std::size_t refs = 0 );
(C++11以降)

name で指定されたロケール用の新しい std::time_put_byname ファセットを構築します。

refs はリソース管理に使用されます。 refs == 0 の場合、それを持つ最後の std::locale オブジェクトが破棄されるときに、実装はファセットを破棄します。それ以外の場合、オブジェクトは破棄されません。

パラメータ

name - ロケールの名前
refs - ファセットを参照する参照の数

std::time_put_byname::~time_put_byname

protected:
~time_put_byname();

ファセットを破棄します。

std::time_put から継承

[編集] データメンバ

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

メンバ関数

do_put を呼び出します。
(std::time_put<CharT,OutputIt> の public メンバ関数) [編集]

Protected member functions

[virtual]
日付/時刻をフォーマットし、出力ストリームに書き込みます。
(std::time_put<CharT,OutputIt> の virtual protected メンバ関数) [編集]

[編集] Example

time_put ファセットを様々な std::time_put_byname ファセットで置き換えた "C" ロケールを使用して、現在の時刻を表示します。表示された結果は clang コンパイラを使用して取得されました。

#include <codecvt>
#include <ctime>
#include <iomanip>
#include <iostream>
 
int main()
{
    std::time_t t = std::time(nullptr);
    std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(std::cout.rdbuf());
    std::wostream out(&conv);
 
    out.imbue(std::locale(out.getloc(),
                          new std::time_put_byname<wchar_t>("ja_JP.utf8")));
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
 
    out.imbue(std::locale(out.getloc(),
                          new std::time_put_byname<wchar_t>("ru_RU.utf8")));
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
 
    out.imbue(std::locale(out.getloc(),
                          new std::time_put_byname<wchar_t>("sv_SE.utf8")));
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
}

実行結果の例

木曜日 2023年10月05日 19時44分51秒
Четверг Чт 05 окт 2023 19:44:51
torsdag tor  5 okt 2023 19:44:51

[編集] See also

std::tm の内容を文字列シーケンスとして出力するために書式設定する
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)