LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME
|
定義先ヘッダ
<locale.h>
|
||
|
#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 */
|
||
上記の各マクロ定数は、整数定数式に展開され、それぞれが異なる値を持ち、 setlocale の第一引数として使用するのに適しています。
| 定数 | 説明 |
LC_ALL
|
Cロケール全体を選択する |
LC_COLLATE
|
Cロケールの照合カテゴリを選択する |
LC_CTYPE
|
Cロケールの文字分類カテゴリを選択する |
LC_MONETARY
|
Cロケールの通貨書式カテゴリを選択する |
LC_NUMERIC
|
Cロケールの数値書式カテゴリを選択する |
LC_TIME
|
Cロケールの時間書式カテゴリを選択する |
追加のマクロ定数で、名前が
LC_
で始まり、その後少なくとも1つの大文字が続くものは、
locale.h
で定義される可能性があります。例えば、POSIX仕様では
LC_MESSAGES
(これは特に
perror
と
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 <locale.h> #include <stdio.h> #include <time.h> #include <wchar.h> int main(void) { setlocale(LC_ALL, "en_US.UTF-8"); // CロケールはUTF-8対応の英語になります setlocale(LC_NUMERIC, "de_DE.utf8"); // 小数点はドイツ式になります setlocale(LC_TIME, "ja_JP.utf8"); // 日付/時刻の書式は日本語になります wchar_t str[100]; time_t t = time(NULL); wcsftime(str, 100, L"%A %c", localtime(&t)); wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str); }
出力例:
Number: 3,14 Date: 金曜日 2023年09月15日 20時04分14秒
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.11/3 ローカライゼーション <locale.h> (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.11/3 ローカライゼーション <locale.h> (p: TBD)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.11/3 ローカライゼーション <locale.h> (p: 224)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.11/3 ローカライゼーション <locale.h> (p: 205)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.4 ローカライゼーション <locale.h>
関連項目
|
現在のCロケールを取得および設定する
(関数) |
|
|
C++ documentation
for
locale categories
|
|