総合手引 | セクション 3 | English | Deutsch | オプション |
#include <locale.h>
setlocale() 関数は、いくつかのルーチンのカテゴリを識別します。 以下は、カテゴリとカテゴリが選択したルーチンの組です。
LC_ALL | ロケール全体をまとめて設定します。 |
LC_COLLATE | 文字列照合ルーチン用のロケールを設定します。これは strcoll() および strxfrm() でのアルファベット順を制御します。 |
LC_CTYPE | ctype(3), mbrune(3), multibyte(3) および rune(3) の各関数のロケールを設定します。 これは、大文字と小文字、アルファベットと非アルファベット文字 などの識別を制御します。実際の作業は setrunelocale() 関数によって行われます。 |
LC_MESSAGES | |
メッセージカタログのロケールを設定します。 catopen(3) 関数を参照してください。 | |
LC_MONETARY | |
通貨値の整形用ロケールを設定します。これは localeconv() 関数に影響を及ぼします。 | |
LC_NUMERIC | 数字を整形するためのロケールを設定します。これは、 localeconv() によって返される値を制御するのに加えて、 printf() および scanf() のような関数の浮動小数点入出力の小数点整形方法も制御します。 |
LC_TIME | strftime() 関数を使用して日付と時刻を整形するためのロケールを設定します。 |
デフォルトでは 3 つのロケールだけが定義されています。空の文字列 amp; " はネイティブの環境を表します。そして amp; C" および amp; POSIX" ロケールは C 言語環境を表します。 locale 引数が NULL の場合には、 setlocale() は現在のロケールを戻します。デフォルトでは、 C プログラムは amp; C" ロケールで開始します。ロケールを設定する唯一のライブラリ内関数は setlocale() です。ロケールは他のルーチンの副作用として変更されることはありません。
localeconv() 関数は、数字、特に通貨値の整形用パラメータを 提供する構造体を指すポインタを返します。
struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; };
個々のフィールドには次の意味があります。
decimal_point | |
通貨値を除く、小数点文字です。 | |
thousands_sep | |
通貨値を除く、小数点の前の桁のグループ間の区切り文字です。 | |
grouping | |
通貨値を除く、桁のグループの大きさです。 これは、 char 型の、低い位の桁から高い位の桁 (右から左) までのグループの大きさを表す 整数の配列を指すポインタです。 そのリストは、0 または CHAR_MAX で終わります。リストが 0 で終了する場合には、0 の前の最後のグループの 大きさを、全ての桁が埋まるまで繰り返し用います。 CHAR_MAX で終了する場合には、それ以上のグループ化は実行されません。 | |
int_curr_symbol | |
標準で定められた国際通貨記号です。 | |
currency_symbol | |
ローカルな通貨記号です。 | |
mon_decimal_point | |
通貨値に対する小数点文字です。 | |
mon_thousands_sep | |
通貨値内の桁のグループについての区切り文字です。 | |
mon_grouping | |
grouping に類似していますが、通貨用です。 | |
positive_sign | |
非負の通貨値を表記するのに使用される文字で、通常は空の文字列です。 | |
negative_sign | |
負の通貨値を表現するのに使用される文字で、 通常はマイナス符号です。 | |
int_frac_digits | |
国際スタイルの通貨値における小数点以下の桁数です。 | |
frac_digits | |
ローカルスタイルの通貨値における小数点以下の桁数です。 | |
p_cs_precedes | |
非負の値に対して通貨値の前に通貨記号が置かれる場合には 1、 そうでない場合には 0 です。 | |
p_sep_by_space | |
非負の値に対して通貨記号と通貨値の間に空白が挿入されている場合は 1、 そうでない場合には 0 です。 | |
n_cs_precedes | |
負の値に対して p_cs_precedes と同様です。 | |
n_sep_by_space | |
負の値に対して p_sep_by_space と同様です。 | |
p_sign_posn | |
非負の量および currency_symbol に関する positive_sign の位置です。コードは次の通りです。 | |
0 | 文字列全体を囲む丸括弧です。 |
1 | 文字列の前です。 |
2 | 文字列の後です。 |
3 | currency_symbol の直前です。 |
4 | currency_symbol の直後です。 |
n_sign_posn | |
負の通貨値に対して p_sign_posn と同様です。 | |
前述した場合を除いて、フィールドの値としての空の文字列は、 結果の長さがゼロであるか、または現在のロケール内にはない値で あることを示します。 同様に CHAR_MAX の結果は利用できない値を表記します。
$PATH_LOCALE/ locale/category
/usr/share/locale/ locale/category | |
ロケール locale とカテゴリ category 用のロケールファイル | |
localeconv() における整然としない通貨サポートにも関わらず、規格は、 一般化された通貨フォーマットのための関数を組み入れていません。
われわれがリアルタイムの通貨変換機能を持つまでは、 LC_MONETARY の使用は間違った結果を導く可能性があります。 LC_NUMERIC および LC_TIME は個人的な選択肢であり、他のカテゴリで覆い隠すべきではありません。
SETLOCALE (3) | June 9, 1993 |
総合手引 | セクション 3 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | A typical Unix /bin or /usr/bin directory contains a hundred different kinds of programs, written by dozens of egotistical programmers, each with its own syntax, operating paradigm, rules of use ... strategies for specifying options, and different sets of constraints. | ” |
— The Unix Haters' handbook |