Spec-Zone.ru › C++

std::messages_byname

Определено в заголовке <locale>
template< class CharT >
class messages_byname : public std::messages<CharT>;

std::messages_byname — это std::messages фасад, который инкапсулирует получение строк из каталогов сообщений локали, указанной при её построении.

Специализации

Стандартная библиотека гарантирует предоставление следующих специализаций:

Определено в заголовке <locale>
std::messages_byname<char> Доступ к каталогам сообщений с узким/многобайтовым кодированием
std::messages_byname<wchar_t> Доступ к каталогам сообщений с широким кодированием

Типы членов

Тип члена Определение
catalog std::messages_base<CharT>::catalog
string_type std::basic_string<CharT>

Члены-функции

(конструктор)
Создает новый messages_byname фасад
(публичная функция-член)
(деструктор)
Уничтожает messages_byname фасад
(защищённая функция-член)

std::messages_byname::messages_byname

explicit messages_byname( const char* name, std::size_t refs = 0 );
explicit messages_byname( const std::string& name, std::size_t refs = 0 );
(с C++11)

Создаёт новый std::messages_byname фасад для локали с name.

refs используется для управления ресурсами: если refs == 0, реализация уничтожает фасад, когда последний объект std::locale держащий его уничтожается. Иначе, объект не уничтожается.

Параметры

name - имя локали
refs - количество ссылок, связанных с фасадом

std::messages_byname::~messages_byname

protected:
~messages_byname();

Уничтожает фасад.

Наследуется от std::messages

Типы членов

Тип члена Определение
char_type CharT
string_type std::basic_string<CharT>

Члены-объекты

Название члена Тип
id (статический) std::locale::id

Члены-функции

open
вызывает do_open
(публичная функция-член std::messages<CharT>)
get
вызывает do_get
(публичная функция-член std::messages<CharT>)
close
вызывает do_close
(публичная функция-член std::messages<CharT>)

Защищённые функции-члены

do_open
[виртуальный]
открывает именованный каталог сообщений
(виртуальная защищённая функция-член std::messages<CharT>)
do_get
[виртуальный]
получает сообщение из открытого каталога сообщений
(виртуальная защищённая функция-член std::messages<CharT>)
do_close
[виртуальный]
закрывает каталог сообщений
(виртуальная защищённая функция-член std::messages<CharT>)

Пример

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

Возможный вывод:

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

См. также

messages
реализует получение строк из каталогов сообщений
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/messages_byname

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API