std::time_put_byname
From cppreference.com
| ヘッダー <locale> で定義 |
||
| template< class CharT, |
||
std::time_put_byname は、構築時に指定されたロケールの時刻と日付のフォーマット規則をカプセル化する std::time_put ファセットです。
目次 |
[編集] Specializations
標準ライブラリは、以下の型要件を満たすすべての特殊化を提供することが保証されています。
-
CharTはcharとwchar_tのいずれかであり、 -
OutputItは LegacyOutputIterator の要件を満たさなければなりません。
[編集] 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 の内容を文字列シーケンスとして出力するために書式設定する (クラステンプレート) |