Spec-Zone.ru › C++

LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME

Определено в заголовочном файле <clocale>
#define LC_ALL      /* implementation defined */
#define LC_COLLATE  /* implementation defined */
#define LC_CTYPE    /* implementation defined */
#define LC_MONETARY /* implementation defined */
#define LC_NUMERIC  /* implementation defined */
#define LC_TIME     /* implementation defined */

Каждая из приведённых выше макроконстант раскрывается в целочисленное константное выражение с уникальным значением, подходящим для использования в качестве первого аргумента std::setlocale.

Константа Описание
LC_ALL выбирает локаль C целиком
LC_COLLATE выбирает категорию правил сортировки локали C
LC_CTYPE выбирает категорию классификации символов локали C
LC_MONETARY выбирает категорию денежного форматирования локали C
LC_NUMERIC выбирает категорию числового форматирования локали C
LC_TIME выбирает категорию форматирования времени локали C

В <clocale> могут быть определены дополнительные макроконстанты, имена которых начинаются с LC_ и за которыми следует хотя бы одна заглавная буква. Например, спецификация POSIX требует LC_MESSAGES (которая управляет std::perror и std::strerror), а ISO/IEC 30112:2014 (проект 2014 года) дополнительно определяет LC_IDENTIFICATION, LC_XLITERATE, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_PAPER, LC_MEASUREMENT и LC_KEYBOARD; они поддерживаются библиотекой GNU C (за исключением LC_XLITERATE).

Пример

#include <clocale>
#include <cstdio>
#include <ctime>
#include <cwchar>

int main()
{
    // the C locale will be the UTF-8 enabled English:
    std::setlocale(LC_ALL, "en_US.UTF-8");

    // decimal dot will be German:
    std::setlocale(LC_NUMERIC, "de_DE.UTF-8");

    // date/time formatting will be Japanese:
    std::setlocale(LC_TIME, "ja_JP.UTF-8");

    wchar_t str[100];
    std::time_t t = std::time(nullptr);
    std::wcsftime(str, 100, L"%A %c", std::localtime(&t));
    std::wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);
}

Вывод:

Number: 3,14
Date: 日曜日 2022年11月06日 17時55分10秒

См. также

setlocale
получает и устанавливает текущую локаль C
(функция)
locale
набор полиморфных аспектов, инкапсулирующих культурные различия
(класс)
Документация по C для категорий локали

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

Spec-Zone.ru

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