std::messages::get, do_get
Defined in header <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 member function, calls the protected virtual member function do_get
of the most derived class.
2) Obtains a message from the open message catalog cat
using the values set
, msgid
and dfault
in implementation-defined manner. If the expected message is not found in the catalog, returns a copy of dfault
.
Parameters
cat | - | identifier of message catalog obtained from open() and not yet passed to close() |
set | - | implementation-defined argument, message set in POSIX |
msgid | - | implementation-defined argument, message id in POSIX |
dfault | - | the string to look up in the catalog (if the catalog uses string look-up) and also the string to return in case of a failure |
Return value
The message from the catalog or a copy of dfault
if none was found.
Notes
On POSIX systems, this function call usually translates to a call to catgets()
, and the parameters set
, msgid
, and dfault
are passed to catgets()
as-is. In GNU libstdc++, this function ignores set
and msgid
and simply calls GNU gettext(dfault)
in the required locale.
Example
The following example demonstrated retrieval of messages: on a typical GNU/Linux system it reads from /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); }
Output:
"No match" in German: Keine Übereinstimmung "Memory exhausted" in German: Speicher erschöpft