std::messages_byname
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <locale> で定義
|
||
template< class CharT > class messages_byname : public std::messages<CharT>; |
||
std::messages_byname は構築時に指定されたロケールのメッセージカタログからの文字列取得をカプセル化する std::messages ファセットです。
2つの特殊化が標準ライブラリによって提供されます。
ヘッダ
<locale> で定義 | |
std::messages_byname<char>
|
ナロー/マルチバイトのメッセージカタログのアクセス |
std::messages_byname<wchar_t>
|
ワイド文字列のメッセージカタログのアクセス |
メンバ型
| メンバ型 | 提議 |
catalog
|
std::messages_base<CharT>::catalog
|
string_type
|
std::basic_string<CharT>
|
メンバ関数
新しい messages_byname ファセットを構築します (パブリックメンバ関数) | |
messages_byname ファセットを破棄します (プロテクテッドメンバ関数) |
std::messages_byname::messages_byname
<tbody> </tbody> 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
<tbody> </tbody> protected: ~messages_byname(); |
||
ファセットを破棄します。
std::messages から継承
メンバ型
| メンバ型 | 定義 |
char_type
|
charT
|
string_type
|
std::basic_string<charT>
|
メンバオブジェクト
| メンバ名 | 型 |
id (static)
|
std::locale::id |
メンバ関数
do_open を呼びます ( std::messages<CharT>のパブリックメンバ関数)
| |
do_get を呼びます ( std::messages<CharT>のパブリックメンバ関数)
| |
do_close を呼びます ( std::messages<CharT>のパブリックメンバ関数)
|
プロテクテッドメンバ関数
[仮想] |
指定された名前のメッセージカタログを開きます ( std::messages<CharT>の仮想プロテクテッドメンバ関数)
|
[仮想] |
開いたメッセージカタログからメッセージを取得します ( std::messages<CharT>の仮想プロテクテッドメンバ関数)
|
[仮想] |
メッセージカタログを閉じます ( std::messages<CharT>の仮想プロテクテッドメンバ関数)
|
例
Run this code
#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" メモリーが足りません
関連項目
| メッセージカタログからの文字列の検索を実装します (クラステンプレート) |