setlocale() 関数は、プログラムのロケールとのインタフェースです。一般的に、国の規約を呼び出して使用するプログラムは、プログラムの実行パスの前のほうで、次のような呼び出しを行わなければなりません。
#include <locale.h> /*...*/ setlocale(LC_ALL, "");
LC_ALL は 1 つのカテゴリではなく、ロケール全体を指定するマクロであるため、この呼び出しによって、プログラムの現在のロケールが適切なローカルバージョンに変更されます。次に、標準的なカテゴリを示します。
表 E-6 標準的なカテゴリLC_COLLATE |
ソート情報 |
LC_CTYPE |
文字分類情報 |
LC_MONETARY |
通貨の出力情報 |
LC_NUMERIC |
数値の出力情報 |
LC_TIME |
日付と時刻の出力情報 |
上記の任意のマクロを setlocale() への最初の引数として渡すことによって、そのカテゴリを指定できます。
setlocale() 関数は、特定のカテゴリ (または、LC_ALL) に対する現在のロケールの名前を返します。2 番目の引数がヌルポインタの場合は、照会専用として機能します。したがって次のようなコードを使用すると、制限された期間だけロケール (または、その一部) を変更できます。
#include <locale.h> /*...*/ char *oloc; /*...*/ oloc = setlocale(LC_<カテゴリ名>, NULL); if (setlocale(LC_<カテゴリ名>, "new") != 0) { /* use temporarily changed locale */ (void)setlocale(LC_<カテゴリ名>, oloc); }
ほとんどのプログラムではこの機能は必要ありません。