Поделиться через


Класс locale

Класс, описывающий объект языкового стандарта, инкапсулирующий данные по соответствующей культуре в качестве набора аспектов, которые собирательно определяют ту или иную локализованную среду.

class locale;

Заметки

Аспект является указателем на объект класса, являющийся производным от класса facet, который обладает открытым объектом в формате:

static locale::id id;

Можно задать открытый набор данных аспектов. Можно также создать объект языкового стандарта, назначающий произвольное количество аспектов.

Предопределенные группы данных аспектов представляют категории языкового стандарта, которыми в стандартной библиотеке C традиционно управляет функция setlocale.

Категория collate (LC_COLLATE) включает аспекты:

collate<char>
collate<wchar_t>

Категория ctype (LC_CTYPE) включает аспекты:

ctype<char>
ctype<wchar_t>
codecvt<char, char, mbstate_t>
codecvt<wchar_t, char, mbstate_t>
codecvt<char16_t, char, mbstate_t>
codecvt<char32_t, char, mbstate_t>

Категория monetary (LC_MONETARY) включает аспекты:

moneypunct<char, false>
moneypunct<wchar_t, false>
moneypunct<char, true>
moneypunct<wchar_t, true>
money_get<char, istreambuf_iterator<char> >
money_get<wchar_t, istreambuf_iterator<wchar_t> >
money_put<char, ostreambuf_iterator<char> >
money_put<wchar_t, ostreambuf_iterator<wchar_t> >

Категория numeric (LC_NUMERIC) включает аспекты:

num_get<char, istreambuf_iterator<char> >
num_get<wchar_t, istreambuf_iterator<wchar_t> >
num_put<char, ostreambuf_iterator<char> >
num_put<wchar_t, ostreambuf_iterator<wchar_t> >
numpunct<char>
numpunct<wchar_t>

Категория time (LC_TIME) включает аспекты:

time_get<char, istreambuf_iterator<char> >
time_get<wchar_t, istreambuf_iterator<wchar_t> >
time_put<char, ostreambuf_iterator<char> >
time_put<wchar_t, ostreambuf_iterator<wchar_t> >

Категория messages (LC_MESSAGES) включает аспекты:

messages<char>
messages<wchar_t>

(Последняя категория необходима Posix для, но не стандартной библиотеке C).

Некоторые из этих предопределенных аспектов используются классами iostreams для управления преобразованием числовых значений в текстовые последовательности и наоборот.

Объект класса locale также сохраняет имя языкового стандарта в качестве объекта класса string. Использование недопустимого имени языкового стандарта для создания аспекта языкового стандарта или объекта языкового стандарта генерирует объект класса runtime_error. Сохраненное имя языкового стандарта — "*", если объект языкового стандарта не может быть уверен в том, что локальный стандарт языка C точно соответствует представленному данным объектом. В противном случае можно установить соответствующий языковой стандарт в стандартной библиотеке C, для объекта языкового стандарта _Loc, путем обращения к setlocale(LC_ALL, _Loc.имя().c_str()).

В данном случае можно также вызвать статическую функцию-член:

static locale empty( );

создать объект языкового стандарта без аспектов. Это также прозрачный языковой стандарт; если функции шаблона has_facet и use_facet не могут найти запрошенный аспект в прозрачном языковом стандарте, они в первую очередь обращаются к глобальному языковому стандарту, а затем, если таковой является прозрачным, к классическому языковому стандарту. Таким образом, можно написать:

cout.imbue(locale::empty( ));

Последующие вставки в cout опосредованы текущим состоянием глобального языкового стандарта. Можно даже написать:

locale loc(locale::empty( ), locale::classic( ),
    locale::numeric);
cout.imbue(loc);

Числовые правила форматирования для последующих вставок в cout остаются такими же, как в языковом стандарте C, даже если глобальный языковой стандарт предоставляет другие правила вставки дат и денежных сумм.

Конструкторы

языковой стандарт

Создает языковой стандарт, копию языкового стандарта или копию языкового стандарта, в которой аспект или категория заменены аспектом или категорией из другого языкового стандарта.

Определения типов

category

Целочисленный тип, который содержит значения битовой маски для обозначения стандартных семейств аспектов.

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

combine

Вставляет аспект из определенного языкового стандарта в целевой языковой стандарт.

name

Возвращает имя сохраненного языкового стандарта.

Статические функции

classic

Данная статическая функция-член возвращает объект языкового стандарта, представляющий классический языковой стандарт C.

global

Сброс языкового стандарта программы по умолчанию.

Операторы

operator!=

Проверка двух языковых стандартов на неравенство.

operator( )

Сравнивает два объекта basic_string.

operator==

Проверка двух языковых стандартов на равенство.

Классы

facet

Класс, используемый как базовый класс для всех аспектов языкового стандарта.

id

Класс члена содержит уникальный идентификатор аспекта, применяемый в качестве индекса для поиска аспектов в языковом стандарте.

Требования

Заголовок: <locale>

Пространство имен: std

См. также

Ссылки

<locale>

Кодовые страницы

Строки имени языкового стандарта, языка и страны и региона

Потокобезопасность в стандартной библиотеке C++