std::messages_byname
From cppreference.com
| ヘッダー <locale> で定義 |
||
| template< class CharT > class messages_byname : public std::messages<CharT>; |
||
std::messages_byname は、構築時に指定されたロケールに属するメッセージカタログから文字列を取得することをカプセル化する std::messages ファセットです。
目次 |
[編集] Specializations
標準ライブラリは、以下の特殊化を提供することが保証されています。
| ヘッダー
<locale> で定義 | |
| std::messages_byname<char> | ナロー/マルチバイトメッセージカタログアクセス |
| std::messages_byname<wchar_t> | ワイド文字列メッセージカタログアクセス |
[編集] Nested types
| 型 | 定義 |
catalog
|
std::messages_base<CharT>::catalog |
string_type
|
std::basic_string<CharT> |
[編集] Member functions
| (コンストラクタ) |
新しい messages_byname ファセットを構築します(public member function) |
| (デストラクタ) |
messages_byname ファセットを破棄します(protected member function) |
std::messages_byname::messages_byname
| explicit messages_byname( const char* name, std::size_t refs = 0 ); |
||
| explicit messages_byname( const std::string& name, std::size_t refs = 0 ); |
(C++11以降) | |
std::messages_byname ファセットを、name で指定されたロケール用に構築します。
refs はリソース管理に使用されます。 refs == 0 の場合、それを持つ最後の std::locale オブジェクトが破棄されるときに、実装はファセットを破棄します。それ以外の場合、オブジェクトは破棄されません。
パラメータ
| name | - | ロケールの名前 |
| refs | - | ファセットを参照する参照の数 |
std::messages_byname::~messages_byname
| protected: ~messages_byname(); |
||
ファセットを破棄します。
std::messages から継承
ネストされた型
| 型 | 定義 |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
[編集] データメンバ
| メンバ | 説明 |
std::locale::id id [static] |
ファセットの識別子 |
メンバ関数
do_open を呼び出します( std::messages<CharT> の public メンバ関数) | |
do_getを呼び出します。( std::messages<CharT> の public メンバ関数) | |
do_close を呼び出します( std::messages<CharT> の public メンバ関数) |
Protected member functions
| [virtual] |
名前付きメッセージカタログを開きます ( std::messages<CharT> の protected virtual メンバ関数) |
| [virtual] |
開いているメッセージカタログからメッセージを取得します ( std::messages<CharT> の protected virtual メンバ関数) |
| [virtual] |
メッセージカタログを閉じます ( std::messages<CharT> の protected virtual メンバ関数) |
[編集] Example
このコードを実行
#include <iostream> #include <locale> void try_with(const std::locale& loc) { const std::messages<char>& facet = std::use_facet<std::messages<char>>(loc); std::messages<char>::catalog cat = facet.open("sed", std::cout.getloc()); if (cat < 0) std::cout << "Could not open \"sed\" message catalog\n"; else std::cout << "\"No match\" " << facet.get(cat, 0, 0, "No match") << '\n' << "\"Memory exhausted\" " << facet.get(cat, 0, 0, "Memory exhausted") << '\n'; facet.close(cat); } int main() { std::locale loc("en_US.utf8"); std::cout.imbue(loc); try_with(std::locale(loc, new std::messages_byname<char>("de_DE.utf8"))); try_with(std::locale(loc, new std::messages_byname<char>("fr_FR.utf8"))); try_with(std::locale(loc, new std::messages_byname<char>("ja_JP.utf8"))); }
実行結果の例
"No match" Keine Übereinstimmung "Memory exhausted" Speicher erschöpft "No match" Pas de concordance "Memory exhausted" Mémoire épuisée "No match" 照合しません "Memory exhausted" メモリーが足りません
[編集] See also
| メッセージカタログからの文字列取得を実装する (クラステンプレート) |