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

LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME

Материал из cppreference.com
 
 
Библиотека локализации
Локали и фасеты
Локали
Базовые классы категорий фасетов
фасеты ctype
числовые фасеты
фасеты сопоставления
фасеты времени
денежные фасеты
фасеты сообщений
Классификация и преобразование символов
Классификация символов
Преобразование
(C++11/17*)
(C++11/17*)
Фасеты преобразования кода
(C++11/17*)
(C++11/17*)    
(C++11/17*)
Локаль C
 
<tbody> </tbody>
Определено в заголовочном файле <clocale>
#define LC_ALL /* определено реализацией */
#define LC_COLLATE /* определено реализацией */
#define LC_CTYPE /* определено реализацией */
#define LC_MONETARY /* определено реализацией */
#define LC_NUMERIC /* определено реализацией */
#define LC_TIME /* определено реализацией */

Каждая из приведённых выше макроконстант расширяется до целочисленных константных выражений с различными значениями, которые подходят для использования в качестве первого аргумента 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) дополнительно определяет LC_IDENTIFICATION, LC_XLITERATE, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_PAPER, LC_MEASUREMENT и LC_KEYBOARD, которые поддерживаются библиотекой GNU C (кроме LC_XLITERATE).

Пример

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

int main()
{
    // локаль C будет английским языком с поддержкой UTF-8:
    std::setlocale(LC_ALL, "en_US.UTF-8");

    // десятичная точка будет немецкой:
    std::setlocale(LC_NUMERIC, "de_DE.UTF-8");

    // форматирование даты/времени будет японским:
    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"Число: %.2f\\Дата: %Ls\n", 3.14, str);
}

Вывод:

Число: 3,14
Дата: 日曜日 2022年11月06日 17時55分10秒

Смотрите также

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