std::messages<CharT>::get, std::messages<CharT>::do_get
来自cppreference.com
本地化库
| 本地环境与平面 | |||||||||||||||||||||
| 本地环境 | |||||||||||||||||||||
| 平面类别基类 | |||||||||||||||||||||
| ctype(字符类别)平面 | |||||||||||||||||||||
| numeric(数值)平面 | |||||||||||||||||||||
| collate(对照比较)平面 | |||||||||||||||||||||
| time(时间)平面 | |||||||||||||||||||||
| monetary(货币)平面 | |||||||||||||||||||||
| messages(消息)平面 | |||||||||||||||||||||
| 字符分类与转换 | |||||||||||||||||||||
| 字符分类 | |||||||||||||||||||||
| 转换 | |||||||||||||||||||||
|
|||||||||||||||||||||
| 编码转换平面 | |||||||||||||||||||||
|
|
||||||||||||||||||||
| C 本地环境 | |||||||||||||||||||||
std::messages
| 成员函数 | ||||
|
messages::getmessages::do_get
|
||||
|
在标头
<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) 用值 set 、 msgid 和 dfault ,以实现定义方式从打开的消息目录
cat 获得消息。若目录中找不到期待 消息,则返回 dfault 的副本。
参数
| cat | - | 从 open() 获得且仍未传递给 close() 的标识符 |
| set | - | 实现定义参数, POSIX 中为消息集 |
| msgid | - | 实现定义参数, POSIX 中为消息标识 |
| dfault | - | 要在目录中查找的字符串(若目录使用字符串查找),亦为失败情况下返回的字符串 |
返回值
来自目录的消息,或若找不到消息则为 dfault 的副本。
注意
POSIX 系统上,此函数调用通常被翻译为对
catgets()
的调用,并原态传递参数 set 、 msgid 和 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