:: reverse dictionary ::
※ソースファイルについて
設定されているロケールの詳細を取得するには、localeconv 関数を使います。
#include <locale.h> #include <stdio.h>
struct lconv *lc; char *locale; int i, length; /* ロケールを日本語に設定 */ locale = setlocale(LC_ALL, "ja"); printf("locale=%s\n", locale); /* ロケールの詳細を取得 */ lc = localeconv(); printf("decimal_point=%s\n", lc->decimal_point); printf("thousands_sep=%s\n", lc->thousands_sep); length = sizeof(lc->grouping) / sizeof(char); for (i = 0; i < length; i++) { printf("grouping[%d]=%d\n", i, lc->grouping[i]); } printf("int_curr_symbol=%s\n", lc->int_curr_symbol); printf("currency_symbol=%s\n", lc->currency_symbol); printf("mon_decimal_point=%s\n", lc->mon_decimal_point); printf("mon_thousands_sep=%s\n", lc->mon_thousands_sep); length = sizeof(lc->mon_grouping) / sizeof(char); for (i = 0; i < length; i++) { printf("mon_grouping[%d]=%d\n", i, lc->mon_grouping[i]); } printf("positive_sign=%s\n", lc->positive_sign); printf("negative_sign=%s\n", lc->negative_sign); printf("int_frac_digits=%d\n", lc->int_frac_digits); printf("frac_digits=%d\n", lc->frac_digits); printf("p_cs_precedes=%d\n", lc->p_cs_precedes); printf("n_cs_precedes=%d\n", lc->n_cs_precedes); printf("n_sep_by_space=%d\n", lc->n_sep_by_space); printf("p_sign_posn=%d\n", lc->p_sign_posn); printf("n_sign_posn=%d\n", lc->n_sign_posn);
次のような出力になります。(Windows の場合)
locale=Japanese_Japan.932 decimal_point=. thousands_sep=, grouping[0]=3 grouping[1]=0 grouping[2]=0 grouping[3]=0 int_curr_symbol=JPY currency_symbol=\ mon_decimal_point=. mon_thousands_sep=, mon_grouping[0]=3 mon_grouping[1]=0 mon_grouping[2]=0 mon_grouping[3]=0 positive_sign= negative_sign=- int_frac_digits=2 frac_digits=0 p_cs_precedes=1 p_sep_by_space=0 n_cs_precedes=1 n_sep_by_space=0 p_sign_posn=3 n_sign_posn=3
struct lconv *localeconv(void)
現在設定されているロケールの詳細を取得します。
ロケールの詳細を設定した lconv 構造体へのポインタを返します。
ロケールの詳細を設定した lconv 構造体へのポインタ
setlocale 関数を呼ぶことによって、lconv 構造体の内容は上書きされます。
lconv 構造体に設定されるロケールの詳細は、次のとおりです。
| メンバ変数 | 内容 |
|---|---|
| char *decimal_point | 金額以外の小数点数の小数点文字 |
| char *thousands_sep | 金額以外の整数の桁区切り文字 |
| char *grouping | 金額以外の整数に区切りを入れる桁数 |
| char *int_curr_symbol |
国際通貨記号 (ISO 4217 に定義されている国際通貨記号) |
| 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 | 負の金額を表す記号の位置または書式 |
grouping および mon_grouping には、次の値のいずれかが設定されます。
(配列の一つ一つの要素に設定されています)
| 値 | 内容 |
|---|---|
CHAR_MAX(通常は 127) |
区切りは行わない |
| 0 | 残りの各桁に直前の要素を使う |
| 上記以外の値 | 区切りを入れる桁数 |
p_cs_precedes 、p_sep_by_space 、n_cs_precedes 、n_sep_by_space には、1 または 0 が設定されます。
[ p_cs_precedes ]
1 … 現地通貨記号を正の金額の前に付ける
0 … 現地通貨記号を正の金額の後ろに付ける
[ p_sep_by_space ]
1 … 現地通貨記号と正の金額を空白で区切る
0 … 現地通貨記号と正の金額を空白で区切らない
[ n_cs_precedes ]
1 … 現地通貨記号を負の金額の前に付ける
0 … 現地通貨記号を負の金額の後ろに付ける
[ n_sep_by_space ]
1 … 現地通貨記号と負の金額を空白で区切る
0 … 現地通貨記号と負の金額を空白で区切らない
p_sign_posn 、n_sign_posn には、次の値のいずれかが設定されます。
[ p_sign_posn ]
0 … 金額と通貨記号をかっこで囲む
1 … 正の金額を表す記号を金額と通貨記号の前に付ける
2 … 正の金額を表す記号を金額と通貨記号の後ろに付ける
3 … 正の金額を表す記号を通貨記号の直前に付ける
4 … 正の金額を表す記号を通貨記号の直後に付ける
[ n_sign_posn ]
0 … 金額と通貨記号をかっこで囲む
1 … 負の金額を表す記号を金額と通貨記号の前に付ける
2 … 負の金額を表す記号を金額と通貨記号の後ろに付ける
3 … 負の金額を表す記号を通貨記号の直前に付ける
4 … 負の金額を表す記号を通貨記号の直後に付ける
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com