Oracle Solaris Studio 12.2: C ユーザーガイド

6.9.2 setlocale() 関数

setlocale() 関数は、プログラムのロケールとのインタフェースです。一般的に、国の規約を呼び出して使用するプログラムは、プログラムの実行パスの前のほうで、次のような呼び出しを行わなければいけません。


#include <locale.h>
/*...*/
setlocale(LC_ALL, "");

これは、プログラムの実行パスの前のほうで行います。プログラムの実行パスの最初の部分 LC_ALL は 1 つのカテゴリではなく、ロケール全体を指定するマクロであるため、この呼び出しによって、プログラムの現在のロケールが適切なローカルバージョンに変更されます。次に、標準的なカテゴリを示します。

LC_COLLATE

ソート情報 

LC_CTYPE

文字分類情報 

LC_MONETARY

通貨の出力情報 

LC_NUMERIC

数値の出力情報 

LC_TIME

日付と時刻の出力情報 

前述の任意のマクロを 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);
}

ほとんどのプログラムではこの機能は必要ありません。