C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > ロケール > 設定されているロケールの詳細を取得する

C 標準関数逆引き辞典

:: 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_precedesp_sep_by_spacen_cs_precedesn_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_posnn_sign_posn には、次の値のいずれかが設定されます。

[ p_sign_posn ]
0 … 金額と通貨記号をかっこで囲む
1 … 正の金額を表す記号を金額と通貨記号の前に付ける
2 … 正の金額を表す記号を金額と通貨記号の後ろに付ける
3 … 正の金額を表す記号を通貨記号の直前に付ける
4 … 正の金額を表す記号を通貨記号の直後に付ける

[ n_sign_posn ]
0 … 金額と通貨記号をかっこで囲む
1 … 負の金額を表す記号を金額と通貨記号の前に付ける
2 … 負の金額を表す記号を金額と通貨記号の後ろに付ける
3 … 負の金額を表す記号を通貨記号の直前に付ける
4 … 負の金額を表す記号を通貨記号の直後に付ける

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

ロケール - locale -


ホーム > C 標準関数逆引き辞典 > ロケール > 設定されているロケールの詳細を取得する

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com