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>

Функции-члены

(constructor)
создаёт новый фасет messages_byname
(открытая функция-член)
(destructor)
уничтожает фасет 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>

Поля данных

Поле Описание
std::locale::id id [static] идентификатор фасета

Функции-члены

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>)

Унаследовано от std::messages_base

Вложенные типы

Тип Определение
catalog неуточнённый знаковый целочисленный тип

Пример

#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/cpp/locale/messages_byname

Spec-Zone.ru

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