名前空間
変種
操作

std::messages_byname

From cppreference.com
< cpp‎ | locale
 
 
 
 
ヘッダー <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 メンバ関数) [編集]

std::messages_base から継承

ネストされた型

定義
catalog 未指定の符号付き整数型

[編集] 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

メッセージカタログからの文字列取得を実装する
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)