C言語編 標準ライブラリのリファレンス lconv

先頭へ戻る

lconv

概要 数値と通貨を書式化することに関する情報を集めた型。
ヘッダ locale.h
形式
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;
};
	
詳細 「形式」に挙げたメンバは、標準で必ず持つことが定められているが、これら以外にもメンバを持つ可能性がある。各メンバの意味は次の通り。
メンバ 意味
decimal_point 金額以外に使う、小数点文字
thousands_sep 金額以外に使う、数字群分離文字
grouping 金額以外に使う、数字群桁数
int_curr_symbol 国際通貨記号と金額を分離する文字
currency_symbol 現在のロケールのための地域的通貨記号
mon_decimal_point 金額用の小数点文字
mon_thousands_sep 金額用の数字群分離文字
mon_grouping 金額用の数字群桁数
positive_sign 金額の正の符号文字
negative_sign 金額の負の符号文字
int_frac_digits 国際金額書式のための小数部の桁数
frac_digits その地域向けの金額書式において、表示される小数部の桁数
p_cs_precedes 通貨記号が、負でない金額の手前に付くなら 1、後に付くなら 0
p_sep_by_space その地域向けの負でない金額の書式において、通貨記号、符号、値のそれぞれの区切り方を表す。0 の場合、通貨記号と値を区切らない。1 の場合、通貨記号と値の間を1つの空白文字で区切る。
2 の場合、通貨記号と符号が隣接していれば、1つの空白文字でそれらを区切る。通貨記号と符号が隣接していなければ、符号と値の間を1つの空白文字で区切る。
n_cs_precedes 通貨記号が、負の金額の手前に付くなら 1、なければ 0
n_sep_by_space その地域向けの負の金額の書式において、通貨記号、符号、値のそれぞれの区切り方を表す。0 の場合、通貨記号と値を区切らない。1 の場合、通貨記号と値の間を1つの空白文字で区切る。
2 の場合、通貨記号と符号が隣接していれば、1つの空白文字でそれらを区切る。通貨記号と符号が隣接していなければ、符号と値の間を1つの空白文字で区切る。
p_sign_posn 負でない金額と通貨記号に対する、正の符号の位置を表す。
0 の場合、値と通貨記号を括弧で囲む。1 の場合、符号が値と通貨記号よりも手前に位置する。2 の場合、符号が値と通貨記号の後ろに位置する。3 の場合、符号が通貨記号の直前に位置する。4 の場合、符号が通貨記号の直後に位置する。
n_sign_posn 負の金額と通貨記号に対する、負の符号の位置を表す。
0 の場合、値と通貨記号を括弧で囲む。1 の場合、符号が値と通貨記号よりも手前に位置する。2 の場合、符号が値と通貨記号の後ろに位置する。3 の場合、符号が通貨記号の直前に位置する。4 の場合、符号が通貨記号の直後に位置する。
型が char* のメンバについては ""、char型のメンバについては CHAR_MAX であるとき、そのメンバについては、値が与えられていないことを意味する。
注意
使用例
#include <stdio.h>
#include <locale.h>

static void PrintLconv();

int main(void)
{
    setlocale( LC_ALL, "" );
    PrintLconv();

#if defined(_MSC_VER)
    setlocale( LC_ALL, "spanish" );
#elif defined(__clang__)
    setlocale( LC_ALL, "es_ES" );
#endif
    PrintLconv();

    return 0;
}

void PrintLconv()
{
    const struct lconv* lc = localeconv();

    printf( "--- %s ---\n", setlocale( LC_ALL, NULL ) );

    printf( "decimal_point == %s\n", lc->decimal_point );
    printf( "thousands_sep == %s\n", lc->thousands_sep );
    printf( "grouping == %s\n", lc->grouping );
    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 == %s\n", lc->mon_grouping );
    printf( "positive_sign == %s\n", lc->positive_sign );
    printf( "negative_sign == %s\n", lc->negative_sign );
    printf( "int_frac_digits == %c\n", lc->int_frac_digits );
    printf( "frac_digits == %c\n", lc->frac_digits );
    printf( "p_cs_precedes == %c\n", lc->p_cs_precedes );
    printf( "p_sep_by_space == %c\n", lc->p_sep_by_space );
    printf( "n_cs_precedes == %c\n", lc->n_cs_precedes );
    printf( "n_sep_by_space == %c\n", lc->n_sep_by_space );
    printf( "p_sign_posn == %c\n", lc->p_sign_posn );
    printf( "n_sign_posn == %c\n", lc->n_sign_posn );

    printf( "\n\n" );
}

実行結果 (VisualStudio):

--- Japanese_Japan.932 ---
decimal_point == .
thousands_sep == ,
grouping == 
int_curr_symbol == JPY
currency_symbol == \
mon_decimal_point == .
mon_thousands_sep == ,
mon_grouping == 
positive_sign ==
negative_sign == -
int_frac_digits ==
frac_digits ==
p_cs_precedes == 
p_sep_by_space ==
n_cs_precedes == 
n_sep_by_space ==
p_sign_posn == 
n_sign_posn == 


--- Spanish_Spain.1252 ---
decimal_point == ,
thousands_sep == .
grouping == 
int_curr_symbol == EUR
currency_symbol == ?
mon_decimal_point == ,
mon_thousands_sep == .
mon_grouping == 
positive_sign ==
negative_sign == -
int_frac_digits == 
frac_digits == 
p_cs_precedes == 
関連 lconv構造体の値は、localeconv関数が返すポインタを経由して得られる。
解説章


参考リンク

更新履歴

'2018/4/10 メンバに与えられる値が意味付けされている項目について、それぞれの意味を追記した。

'2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

'2018/1/22 新規作成。





標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS