この関数の目的
setlocale()は、ロケールを設定する。
定義
#include <locale.h> char *setlocale(int category, const char *locale);
働き
category で指定される分類のロケールを locale にセットする。
この関数はプログラム全体か一部のロケールを変更したり、問い合わせたりするのに使う。
category に入れられる定数は LC_
で始まるもので、ヘッダファイルに定義されている。
category の意味を以下に示す。
返り値は、ロケールが指定されたものに変更できるものなら、 category の新しいロケールを表す文字列へのポインタ、 そうでないならヌルポインタとなりロケールは変更されない。
locale にヌルポインタを渡せば、その category での現在のロケールを表す文字列へのポインタを返し、 プログラムのロケールは変更されない**。
返り値のポインタが指す文字列は、次回の呼び出しで引数として使うことによりその分野のロケールを復帰させることができるものである。 文字列はプログラム側によって変更されてはならないが、次回の setlocale() 呼び出しによって上書きされるかもしれない。
(*) ctype.h 内でロケールの影響を受けないのは isdigit() および isxdigit() だけである。
(**) 処理系は複数の分野におけるロケールを一つの文字列に表すように符号化しなければならない。
なぜなら category に LC_ALL
を渡した時に、分野によってロケールが違う場合がありうるからである。