| Localization library | |||||||||||||||||||||||||
| Regular expressions library(C++11) | |||||||||||||||||||||||||
| Formatting library(C++20) | |||||||||||||||||||||||||
| Null-terminated sequence utilities | |||||||||||||||||||||||||
| Byte strings | |||||||||||||||||||||||||
| Multibyte strings | |||||||||||||||||||||||||
| Wide strings | |||||||||||||||||||||||||
| Primitive numeric conversions | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| Text encoding identifications | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
messages::openmessages::do_open | ||||
Defined in header <locale> | ||
public: catalog open(conststd::string& name,conststd::locale& loc)const; | (1) | |
protected: virtual catalog do_open(conststd::string& name,conststd::locale& loc)const; | (2) | |
do_open of the most derived class.catalog (inherited fromstd::messages_base), which can be passed toget() to retrieve messages from the message catalog named byname. This value is usable until passed toclose().Contents |
| name | - | name of the message catalog to open |
| loc | - | a locale object that provides additional facets that may be required to read messages from the catalog, such asstd::codecvt to perform wide/multibyte conversions |
The non-negative value of typecatalog that can be used withget() andclose(). Returns a negative value if the catalog could not be opened.
On POSIX systems, this function call usually translates to a call tocatopen(). In GNU libstdc++, it callstextdomain.
The actual catalog location is implementation-defined: for the catalog"sed" (message catalogs installed with the Unix utility'sed') in German locale, for example, the file opened by this function call may be/usr/lib/nls/msg/de_DE/sed.cat,/usr/lib/locale/de_DE/LC_MESSAGES/sed.cat, or/usr/share/locale/de/LC_MESSAGES/sed.mo.
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";elsestd::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);}
Possible output:
"No match" in German: Keine Übereinstimmung"Memory exhausted" in German: Speicher erschöpft