<clocale>ヘッダ †
<clocale>ヘッダは、ロケールを操作するための関数の宣言と、それに関連する型とマクロを定義する。
マクロ †
NULL †
空ポインタ定数
解説
処理系定義の空ポインタ定数を表すマクロ。0 や 0L に定義される可能性はあるが、(void*)0 に定義されることはない。
参考
NULL マクロは、<clocale>ヘッダ以外に、<cstddef>ヘッダ、<cstdio>ヘッダ、<cstdlib>ヘッダ、<cstring>ヘッダ、<ctime>ヘッダ、および<cwchar>ヘッダでも定義される。
LC_ALL †
ロケール全体
解説
setlocale 関数の第 1 引数に LC_ALL を渡すことで、ロケール全体を指定する。
LC_COLLATE †
文字列照合カテゴリ
解説
setlocale 関数の第 1 引数に LC_COLLATE を渡すことで、strcoll 関数 および strxfrm 関数 の動作に影響を与える。
LC_CTYPE †
文字種別カテゴリ
解説
setlocale 関数の第 1 引数に LC_CTYPE を渡すことで、文字操作関数、多バイト文字操作関数、およびワイド文字操作関数の動作に影響を与える。
LC_MONETARY †
金額カテゴリ
解説
setlocale 関数の第 1 引数に LC_MONETARY を渡すことで、localeconv 関数が返す金額の書式に影響を与える。
LC_NUMERIC †
数値カテゴリ
解説
setlocale 関数の第 1 引数に LC_NUMERIC を渡すことで、localeconv 関数が返す金額以外の書式に影響を与える。
LC_TIME †
時間カテゴリ
解説
setlocale 関数の第 1 引数に LC_TIME を渡すことで、strftime 関数および wcsftime 関数の動作に影響を与える。
型 †
lconv †
数値書式規約
形式
namespace std {
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;
};
}
解説
数値を書式するための規約に関する情報を格納する構造体。lconv 構造体は、少なくとも以下のメンバが任意の順で含まれている。
char* 型のメンバは文字列である。そのメンバが無効であるか長さが 0 である場合は "" を指す (decimal_point を除く)。また、各文字列は、初期シフト状態で始まり初期シフト状態で終わる (grouping および mon_grouping を除く)。
char 型のメンバは常に正の値に設定される。そのメンバが無効である場合は CHAR_MAXに設定される*1。
- decimal_point
- 金額以外の数量の書式化に用いる小数点文字
- thousands_sep
- 金額以外の書式化された数量の、小数点文字より前 (整数部) を区切る文字。例えば、千を表す 1,000 における "," など。
- grouping
- 金額以外の書式化された数量における数字の各グループの桁数を、文字列として表す。
- int_curr_symbol
- 現在のロケールに対応した国際通貨記号。最初の 3 文字は ISO 4217 の規定に基づく英字の国際通貨記号 ("JPY" など)。4 文字目は通貨記号と数量を区切る文字。
- currency_symbol
- 現在のロケールに対応した通貨記号 ("$" や "&#yen;" など)。
- mon_decimal_point
- 金額の書式化に用いる小数点文字。
- mon_thousands_sep
- 書式化された金額の、小数点文字より前 (整数部) を区切る文字。例えば、千を表す 1,000 における "," など。
- mon_grouping
- 書式化された金額における数字の各グループの桁数を、文字列として表す。
- positive_sign
- 書式化された金額が負でない場合の符号文字列。
- negative_sign
- 書式化された金額が負の場合の符号文字列。
- int_frac_digits
- 国際様式で書式化された金額の、小数点文字より後 (小数部) の桁数。
- frac_digits
- 書式化された金額の、小数点文字より後 (小数部) の桁数。
- p_cs_precedes
- 現在のロケールに応じて書式化された金額が負でない場合に、currency_symbol が数値の前に表記される場合は 1、後に表記される場合は 0 に設定される。
- p_sep_by_space
- 現在のロケールに応じて書式化された金額が負でない場合に、currency_symbol、符号、および値の区切り方を表す値。
- n_cs_precedes
- 現在のロケールに応じて書式化された金額が負の場合に、currency_symbol が数値の前に表記される場合は 1、後に表記される場合は 0 に設定される。
- n_sep_by_space
- 現在のロケールに応じて書式化された金額が負の場合に、currency_symbol、符号、および値の区切り方を表す値。
- p_sign_posn
- 現在のロケールに応じて書式化された金額が負でない場合に、positive_sign が表記される位置を表す値。
- n_sign_posn
- 現在のロケールに応じて書式化された金額が負の場合に、positive_sign が表記される位置を表す値。
grouping および mon_grouping の次のように解釈される。
値 | 意味 |
CHAR_MAX | それ以上のグループ分けを行わない |
0 | 前の要素を残りの数字に対して繰り返して適用する |
その他 | その要素の値が、対応するグループに属す数字の個数を表す。次の要素は、先の要素でグループ分け数字列の前にある数字のグループ分けに使用する |
p_sep_by_space および n_sep_by_space は次のように解釈される。
値 | 意味 |
0 | 通貨記号と数量は空白で区切らない |
1 | 符号文字列と通貨記号が隣接していれば、それらと数量を 1 つの空白で区切る。それ以外の場合は、通貨記号と数量を 1 つの空白で区切る |
2 | 符号文字列と通貨記号が隣接していれば、それらを 1 つの空白で区切る。それ以外の場合は、符号文字列と数量を 1 つの空白で区切る |
p_sign_posn および n_sign_posn は次のように解釈される。
値 | 意味 |
0 | 数量および通貨記号を括弧で囲む |
1 | 符号文字列が数量および通貨記号に先行する |
2 | 数量および通貨記号が符号文字列に先行する |
3 | 符号文字列を通貨記号の直前に表記 |
4 | 通貨記号を符号文字列の直前に表記 |
関数 †
localeconv †
数値書式規約の問い合わせ
形式
namespace std {
struct lconv* localeconv();
}
返却値
数値書式規約を格納した lconv 構造体へのポインタを返す。
解説
現在のロケールに対応した数値書式規約の値を、内部的に保持している lconv 構造体オブジェクトに設定し、そのポインタを返す。返却値が指す構造体の値は、次回以降の localeconv 関数の呼び出しによって変更される場合を除き、プログラムで変更してはならない。なお、すべてのライブラリ関数では、少なくとも見かけ上は localeconv 関数を呼び出すことがない。
setlocale †
ロケール制御
形式
namespace std {
char* setlocale(int category, const char* locale);
}
引数
category:
locale:
返却値
category および locale が適切な場合、設定されたロケールを表す文字列を返す。引数が適切でない場合は空ポインタ?を返す。locale が空ポインタ?の場合は現在のロケールを表す文字列を返す。
解説
category および locale の指定に基づき、現在のロケールの一部または全部を設定する。locale には、<clocale>ヘッダで定義される LC_〜で始まるマクロを指定する。locale には、ロケールを表す処理系定義の文字列を指定する。ただし、locale に "C" を指定した場合は、C++ プログラムの翻訳に必要な最小限の環境であることを意味する。また、locale に "" を指定した場合は、その文化圏に固有の環境であることを意味する。なお、すべてのライブラリ関数では、少なくとも見かけ上は setlocale 関数を呼び出すことがない。プログラム開始時点では、setlocale(LC_ALL, "C") が実行されたかのように振舞う。
category および locale が適切な場合、それらの値に応じたロケールに設定され、その設定されたロケールを表す処理系定義の文字列を返す。引数が適切でない場合、ロケールは設定されず空ポインタ?を返す。locale が空ポインタ?の場合、ロケールは設定されず、その時点で設定されているロケールを表す文字列を返す。
参照 †
Last-modified: Tue, 06 Dec 2005 14:49:19 JST (5563d)