C言語 ロケールの詳細情報を取得 - locale.h [ localeconv, struct lconv ]

2008.08.26 Tuesday | by LRESULT


locale.h(地域固有の操作)には、

地域の設定や、地域の通貨記号などを取得するマクロや関数が定義されています。


localeconv
書式 struct lconv *localeconv( void )
機能 地域の詳細情報の取得
引数 なし
戻り値 struct lconv構造体のポインタを返します。



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』、小数点に『.(ドット)』や、
桁区切りが『,(コンマ)』、であることが分かります。

カテゴリ:C言語 locale.h | 23:27 | comments(1) | trackbacks(0) | -


コメント

管理者の承認待ちコメントです。

| - | 2011/02/26 12:47 AM |

コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/23

トラックバック