Namespaces
Variants

std:: messages_byname

From cppreference.net
ヘッダーで定義 <locale>
template < class CharT >
class messages_byname : public std:: messages < CharT > ;

std::messages_byname は、構築時に指定されたロケールのメッセージカタログからの文字列取得をカプセル化する std::messages ファセットです。

目次

特殊化

標準ライブラリは以下の特殊化を提供することが保証されています:

ヘッダーで定義 <locale>
std :: messages_byname < char > ナローマルチバイトメッセージカタログアクセス
std :: messages_byname < wchar_t > ワイド文字列メッセージカタログアクセス

ネスト型

定義
catalog std:: messages_base < CharT > :: catalog
string_type std:: basic_string < CharT >

メンバー関数

(constructor)
新しい messages_byname ファセットを構築する
(public member function)
(destructor)
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以降)

指定されたロケール名 name に対して新しい std::messages_byname ファセットを構築します。

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メンバ関数)

保護メンバ関数

[virtual]
名前付きメッセージカタログを開く
( std::messages<CharT> の仮想protectedメンバ関数)
[virtual]
開いたメッセージカタログからメッセージを取得する
( std::messages<CharT> の仮想protectedメンバ関数)
[virtual]
メッセージカタログを閉じる
( std::messages<CharT> の仮想protectedメンバ関数)

std:: messages_base から継承

ネストされた型

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

#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" メモリーが足りません

関連項目

メッセージカタログからの文字列取得を実装する
(クラステンプレート)