C言語 ロケールの詳細情報を取得 - locale.h [ localeconv, struct lconv ]
2008.08.26 Tuesday | by LRESULT
locale.h(地域固有の操作)には、
地域の設定や、地域の通貨記号などを取得するマクロや関数が定義されています。
書式 | struct lconv *localeconv( void ) |
---|---|
機能 | 地域の詳細情報の取得 |
引数 | なし |
戻り値 | struct lconv構造体のポインタを返します。 |
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 | 負でない時、通貨記号が前(1)か後(0)か |
char p_sep_by_space | 負でない時、空白で区切る(1)かどうか |
char n_cs_precedes | 負の時、通貨記号が前(1)か後(0)か |
char n_sep_by_space | 負の時、空白で区切る(1)かどうか |
char p_sign_posn | 負でない通貨記号の位置 |
char n_sign_posn | 負の通貨記号の位置 |
日本を指定して、地域の詳細情報を取得してみます。 |
---|
#include <stdio.h> #include <locale.h> int main(void) { struct lconv *lc; setlocale( LC_ALL, "JPN" ); lc = localeconv(); printf( "decimal_point = %s¥n", lc->decimal_point ); printf( "thousands_sep = %s¥n", lc->thousands_sep ); printf( "grouping[0] = %d¥n", lc->grouping[0] ); printf( "grouping[1] = %d¥n", lc->grouping[1] ); printf( "grouping[2] = %d¥n", lc->grouping[2] ); printf( "grouping[3] = %d¥n", lc->grouping[3] ); 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 ); printf( "mon_grouping[0] = %d¥n", lc->mon_grouping[0] ); printf( "mon_grouping[1] = %d¥n", lc->mon_grouping[1] ); printf( "mon_grouping[2] = %d¥n", lc->mon_grouping[2] ); printf( "mon_grouping[3] = %d¥n", lc->mon_grouping[3] ); 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( "p_sep_by_space = %d¥n", lc->p_sep_by_space ); 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 ); return 0; } |
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 |
---|
と、表示されます。 国際通貨記号に『JPY』、小数点に『.(ドット)』や、 桁区切りが『,(コンマ)』、であることが分かります。 |