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

Дополнительные макросы с именами, начинающимися с LC_ и содержащие по крайней мере одну заглавную букву, могут быть определены в <clocale>. Например, спецификация POSIX требует LC_MESSAGES (которая управляет std::perror и std::strerror), а ISO/IEC 30112:2014 (2014 draft) дополнительно определяет 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/w/cpp/locale/LC_categories

Spec-Zone.ru

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