4.30 setlocale()

locale.h で定義される setlocale() 関数は、category 引数と locale 引数によって指定された、適切なロケールを選択します。

構文

char *setlocale(intcategory, const char *locale);

使用法

setlocale() 関数は、現在のロケールの一部または全部を、変更または照会するために使用されます。それぞれの値に対応する category 引数の影響は、以下のとおりです。
LC_COLLATE
strcoll() の動作に影響を与えます。
LC_CTYPE
文字処理関数の動作に影響を与えます。
LC_MONETARY
localeconv() によって返される通貨形式設定情報に影響を与えます。
LC_NUMERIC
形式指定付き入出力関数と文字列変換関数の小数点文字と、localeconv() によって返される数値形式情報に影響を与えます。
LC_TIME
strftime() の動作に影響を与える可能性があります。現在サポートされているロケールに関しては、このオプションによる影響はありません。
LC_ALL
すべてのロケールカテゴリに影響を与えます。上記のすべてのロケールカテゴリのビット単位論理和が取られます。
locale に値 "C" を指定すると、C 変換の最小限の環境が指定されます。locale に空文字列 "" を指定すると、実装定義のネイティブ環境が指定されます。プログラム起動時には、setlocale(LC_ALL, "C") と等価な処理が実行されます。
locale の有効な値は、インポートした __use_X_ctype シンボル(__use_iso8859_ctype__use_sjis_ctype__use_utf8_ctype)と、ユーザ定義ロケールによって異なります。

1 つの__use_X_ctype シンボルだけをインポートできます。

戻り値

locale の文字列へのポインタが渡され、その選択が有効である場合には、新しいロケールに指定されたカテゴリと関連する文字列が返されます。その選択が無効な場合は NULL ポインタが返され、ロケールは変更されません。
locale に NULL ポインタが渡されると、現在のロケールカテゴリに関する文字列が返され、ロケールは変更されません。
categoryLC_ALL であり、ロケールを適切に設定した直前の呼び出しで LC_ALL 以外のカテゴリが使用された場合には、混合文字列が返されることがあります。関連カテゴリのその後の呼び出しで使用されたときに返される文字列によって、その部分のプログラムロケールが復元されます。返される文字列はプログラムによって修正されることはありませんが、setlocale() へのその後の呼び出しによって上書きされる場合があります。
関連する概念
Shift-JIS および UTF-8 の実装
関連する参考文書
4.7 _findlocale()
4.14 lconv 構造体
4.9 _get_lconv()
4.15 localeconv()
ISO8859-1 の実装
1.9.3 C ライブラリのロケールデータブロックの定義
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.