名前空間
変種
操作

std::messages<CharT>::get, std::messages<CharT>::do_get

提供: cppreference.com
< cpp‎ | locale‎ | messages
 
 
 
 
ヘッダ <locale> で定義
public:
string_type get( catalog cat, int set, int msgid, const string_type& dfault ) const;
(1)
protected:
virtual string_type do_get( catalog cat, int set, int msgid, const string_type& dfault ) const;
(2)
1) public メンバ関数。 最も派生したクラスの protected virtual メンバ関数 do_get を呼びます。
2)setmsgid および dfault を処理系定義の方法で使用して、開いたメッセージカタログ cat からメッセージを取得します。 期待するメッセージがカタログ内に見つからない場合は、 dfault のコピーを返します。

目次

[編集] 引数

cat - open() から取得し close() にまだ渡されていないメッセージカタログの識別子
set - 処理系定義の引数 (POSIX のメッセージセット)
msgid - 処理系定義の引数 (POSIX のメッセージ id)
dfault - カタログを検索する文字列 (カタログが文字列検索を使用する場合) および失敗の場合に返す文字列

[編集] 戻り値

カタログから取得したメッセージ、または見つからなかった場合は dfault のコピー。

[編集] ノート

POSIX システムでは、この関数は通常 catgets() の呼び出しに変換され、引数 setmsgid および dfault はそのまま catgets() に渡されます。 GNU libstdc++ では、この関数は set および msgid を無視し、単純に要求されたロケールで GNU gettext(dfault) を呼びます。

[編集]

以下の例はメッセージの取得をデモンストレーションします。 一般的な GNU/Linux システムでは /usr/share/locale/de/LC_MESSAGES/sed.mo から読み込みます。

#include <iostream>
#include <locale>
 
int main()
{
    std::locale loc("de_DE.utf8");
    std::cout.imbue(loc);
    auto& facet = std::use_facet<std::messages<char>>(loc);
    auto cat = facet.open("sed", loc);
    if(cat < 0 )
        std::cout << "Could not open german \"sed\" message catalog\n";
    else
        std::cout << "\"No match\" in German: "
                  << facet.get(cat, 0, 0, "No match") << '\n'
                  << "\"Memory exhausted\" in German: "
                  << facet.get(cat, 0, 0, "Memory exhausted") << '\n';
    facet.close(cat);
}

出力例:

"No match" in German: Keine Übereinstimmung
"Memory exhausted" in German: Speicher erschöpft

[編集] 関連項目