名前空間
変種
操作

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

From 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) 公開メンバ関数。最も派生したクラスの保護仮想メンバ関数 do_get を呼び出します。
2) 開いているメッセージカタログ cat から、値 setmsgiddfault を使用して、実装定義の方法でメッセージを取得します。期待されるメッセージがカタログに見つからない場合は、dfault のコピーを返します。

目次

[編集] パラメータ

cat - open() から取得され、まだ close() に渡されていないメッセージカタログの識別子
set - 実装定義の引数。POSIX ではメッセージセット。
msgid - 実装定義の引数。POSIX ではメッセージ ID。
dfault - カタログで検索する文字列(カタログが文字列検索を使用する場合)であり、失敗した場合に返す文字列。

[編集] 戻り値

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

[編集] 注記

POSIX システムでは、この関数呼び出しは通常 catgets() の呼び出しに変換され、パラメータ setmsgiddfault はそのまま catgets() に渡されます。GNU libstdc++ では、この関数は setmsgid を無視し、必要なロケールで 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

[編集] 関連項目

English 日本語 中文(简体) 中文(繁體)