名前空間
変種
操作

std::time_put_byname

提供: cppreference.com
< cpp‎ | locale
 
 
 
ヘッダ <locale> で定義
template< class CharT, class OutputIterator = std::ostreambuf_iterator<CharT> >
class time_put_byname : public std::time_put<CharT, OutputIterator>;

std::time_put_byname は構築時に指定されたロケールの時間と日付の書式化ルールをカプセル化する std::time_put ファセットです。

2つの特殊化が標準ライブラリによって提供されます。

ヘッダ <locale> で定義
std::time_put_byname<char, OutputIterator> ナロー/マルチバイトの時間の書式化
std::time_put_byname<wchar_t, OutputIterator> ワイド文字列の時間の書式化

目次

[編集] メンバ型

メンバ型 定義
char_type CharT
iter_type OutputIterator

[編集] メンバ関数

コンストラクタ
新しい time_put_byname ファセットを構築します
(パブリックメンバ関数) [edit]
デストラクタ
time_put_byname ファセットを破棄します
(プロテクテッドメンバ関数) [edit]

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 から継承

メンバオブジェクト

メンバ名
id (static) std::locale::id

メンバ関数

do_put を呼びます
(std::time_putのパブリックメンバ関数) [edit]

プロテクテッドメンバ関数

[仮想]
日付/時間を書式化し出力ストリームに書き込みます
(std::time_putの仮想プロテクテッドメンバ関数) [edit]

[編集]

この例は様々な time_put_byname ファセットによって time_put ファセットを置き換えた "C" ロケールを用いて現在の時間を表示します。

#include <iostream>
#include <ctime>
#include <iomanip>
#include <codecvt>
 
int main()
{
    std::time_t t = std::time(NULL);
    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")));
    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'; 
}

出力例:

木曜日 2012年08月09日 21時41分02秒
Четверг Чт. 09 авг. 2012 21:41:02
torsdag tor  9 aug 2012 21:41:02

[編集] 関連項目

文字シーケンスとして出力するために struct std::tm の内容をフォーマットします
(クラステンプレート) [edit]