std::messages<CharT>:: get, std::messages<CharT>:: 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) | |
do_get
самого производного класса.
Содержание |
Параметры
| 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