Namespaces
Variants

LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME

From cppreference.net
ヘッダーで定義 <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_ で始まり、その後少なくとも1つの大文字が続くものは、 <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()
{
    // 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"Number: %.2f\nDate: %Ls\n", 3.14, str);
}

出力:

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

関連項目

現在のCロケールを取得および設定する
(関数)
文化的差異をカプセル化する多相的なファセットの集合
(クラス)
Cドキュメント for locale categories