std::messages_byname

From cppreference.com
Defined in header <locale>
template< class CharT >
class messages_byname : public std::messages<CharT>;

std::messages_byname is a std::messages facet which encapsulates retrieval of strings from message catalogs of the locale specified at its construction.

Two specializations are provided by the standard library

Defined in header <locale>
std::messages_byname<char> narrow/multibyte message catalog access
std::messages_byname<wchar_t> wide string message catalog access

Contents

[edit] Member types

Member type Definition
catalog std::messages_base<CharT>::catalog
string_type std::basic_string<CharT>

[edit] Member functions

constructs a new messages_byname facet
(public member function)
destructs a messages_byname facet
(protected member function)

Inherited from std::messages

Member types

Member type Definition
char_type charT
string_type std::basic_string<charT>

Member objects

Member name Type
id (static) std::locale::id

Member functions

invokes do_open
(public member function of std::messages)
invokes do_get
(public member function of std::messages)
invokes do_close
(public member function of std::messages)

Protected member functions

[virtual]
opens a named message catalog
(virtual protected member function of std::messages)
[virtual]
retrieves a message from an open message catalog
(virtual protected member function of std::messages)
[virtual]
closes a message catalog
(virtual protected member function of std::messages)

[edit] Example

#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")));
}

Possible output:

"No match" Keine Übereinstimmung
"Memory exhausted" Speicher erschöpft
"No match" Pas de concordance
"Memory exhausted" Mémoire épuisée
"No match" 照合しません
"Memory exhausted" メモリーが足りません

[edit] See also

implements retrieval of strings from message catalogs
(class template)