Namespaces
Variants
Views
Actions

std::messages_byname

From cppreference.com
< cpp‎ | locale
Revision as of 15:53, 16 February 2013 by 68.170.72.134 (Talk)

Template:ddcl list begin <tr class="t-dsc-header">

<td>
Defined in header <locale>
</td>

<td></td> <td></td> <tr class="t-dcl ">

<td class="t-dcl-nopad">
template< class CharT >
class messages_byname : public std::messages<CharT>;
</td>

<td class="t-dcl-nopad"> </td> <td class="t-dcl-nopad"> </td> </tr> Template:ddcl list end

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

Member types

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

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) [edit]
invokes do_get
(public member function of std::messages) [edit]
invokes do_close
(public member function of std::messages) [edit]

Protected member functions

[virtual]
opens a named message catalog
(virtual protected member function of std::messages) [edit]
[virtual]
retrieves a message from an open message catalog
(virtual protected member function of std::messages) [edit]
[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" メモリーが足りません

See also

Template:cpp/locale/dcl list messages