名前空間
変種
操作

LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME

From cppreference.com
< cpp‎ | locale
 
 
 
 
ヘッダー <clocale> で定義
#define LC_ALL      /* 実装定義 */
#define LC_COLLATE  /* 実装定義 */
#define LC_CTYPE    /* 実装定義 */
#define LC_MONETARY /* 実装定義 */
#define LC_NUMERIC  /* 実装定義 */
#define LC_TIME     /* 実装定義 */

上記の各マクロ定数は、std::setlocale の最初の引数として使用できる、値が異なる整数定数式に展開されます。

Constant 説明
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::perrorstd::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秒

[編集] 関連項目

現在のCロケールを取得および設定する
(関数) [編集]
文化的な違いをカプセル化するポリモーフィックなファセットのセット
(クラス) [編集]
C のドキュメントロケールカテゴリ について)
English 日本語 中文(简体) 中文(繁體)