Пространства имён
Варианты
Действия

std::locale::locale

Материал из cppreference.com
< cpp‎ | locale‎ | locale
 
 
Локализация
Локали и фасеты
locale
Классификация символов
Преобразования
Базовые классы фасетов
Категории фасетов
Зависящие от локали категории фасетов
Не зависящие от локали фасеты преобразования юникода
codecvt_utf8(C++11)
codecvt_utf16(C++11)
Локали С
 
std::locale
Член типов
Оригинал:
Member types
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
locale::id
locale::facet
Член функций
Оригинал:
Member functions
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
locale::locale
locale::~locale
locale::operator=
locale::combine
locale::name
locale::operator==
locale::operator!=
locale::operator()
Статические функции-члены
Оригинал:
Static member functions
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
locale::global
locale::classic
 
Определено в заголовочном файле <locale>
locale();
(1)
locale( const locale& other );
(2)
explicit locale( const char* std_name );
(3)
explicit locale( const std::string& std_name );
(4)
locale( const locale& other, const char* std_name, category cat );
(5)
locale( const locale& other, const std::string& std_name, category cat );
(6)
template< class Facet >
locale( const locale& other, Facet* f );
(7)
locale( const locale& other, const locale& one, category cat );
(8)

1) Конструктор по умолчанию. Создаёт копию глобальной локали C++ (то есть локали, недавно использовавшейся в качестве аргумента в функции std::locale::global или копия локали std::locale::classic, если не вызов функции std::locale::global не происходил.

2) Копирующий конструктор. Создаёт копию локали other.

3-4) Создают копию системной локали с указанным именем std_name (это может быть, к примеру, "C", "POSIX", "en_US.UTF-8" или "English_US.1251"), если такая локаль поддерживается операционной системой. Сконструированная таким образом локаль имеет имя.

5-6) Создают копию локали other, за исключением фасетов, что определяются аргументом cat, которая копируется из системной локали с указанным именем std_name. Сконструированная таким образом локаль имеет то же имя, что и локаль other.

7) Создаёт копию локали other, за исключением фасета типа Facet (этот тип обычно выводится из типа аргумента), который устанавливается из аргумента facet. Если аргумент facet равен NULL, сконструированная локаль является полной копией локали other. Сконструированная таким образом локаль не имеет имени.

8) Создаёт копию локали other, за исключением фасетов, что определяются аргументом cat, которые копируются из локали one. Если и локаль other, и локаль one имеют имена, то полученная локаль также имеет имя.

Содержание

[править] Параметры

other - другая локаль для копирования
std_name - имя используемой системной локали
f - указатель на фасет, который должен быть слит с локалью other
cat - категория локали, используемая для определения фасетов, сливаемых с локалью other
one - другая локаль, из которой берутся фасеты

[править] Исключения

1-2)
спецификация noexcept:  
noexcept
  

3) std::runtime_error, если операционная система не имеет локали с именем std_name или если имя std_name установлено в NULL.

4) std::runtime_error, если операционная система не имеет локали с именем std_name.

5) std::runtime_error, если операционная система не имеет локали с именем std_name или если имя std_name установлено в NULL.

6) std::runtime_error, если операционная система не имеет локали с именем std_name.

7-8) (Нет)

[править] Пример

#include <iostream>
#include <locale>
#include <codecvt>
 
int main()
{
    std::locale l1;  // l1 - копия классической локали "C"
    std::locale l2("en_US.UTF-8"); // l2 - юникодная локаль
    std::locale l3(l1, l2, std::locale::ctype); // l3 - локаль "C" для всего, за исключением фасетов ctype, которые юникодные
    std::locale l4(l1, new std::codecvt_utf8<wchar_t>); // l4 - локаль "C" для всего, за исключением фасета codecvt
    std::cout << "Имена локалей:\nl1: " << l1.name() << "\nl2: " << l2.name()
               << "\nl3: " << l3.name() << "\nl4: " << l4.name() << '\n';
}

Вывод:

Имена локалей:
l1: C
l2: en_US.UTF-8
l3: LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
l4: *

[править] Смотрите также

разрушает локаль и фасеты, чей счётчик ссылок достиг нуля
(public функция-член) [править]