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