Namespaces
Variants

lconv

From cppreference.net
定義済みヘッダー <locale.h>
struct lconv ;

lconv 構造体は、Cロケールで定義される数値および通貨の書式設定ルールを含みます。この構造体のオブジェクトは localeconv で取得できます。 lconv のメンバーは char 型と char * 型の値です。 decimal_point を除く各 char * メンバーは、ヌル文字(空のC文字列)を指している可能性があります。 char 型のメンバーはすべて非負の数値であり、現在のCロケールで対応する値が利用できない場合は、いずれも CHAR_MAX となる可能性があります。

目次

メンバーオブジェクト

非通貨数値フォーマットパラメータ

char* decimal_point
小数点として使用される文字
(public member object)
char* thousands_sep
小数点の前で数字のグループを区切るために使用される文字
(public member object)
char* grouping
要素が数字グループのサイズを示す文字列
(public member object)

通貨数値書式設定パラメータ

char* mon_decimal_point
小数点として使用される文字
(public member object)
char* mon_thousands_sep
小数点の前の数字グループを区切るために使用される文字
(public member object)
char* mon_grouping
要素が数字グループのサイズを示す文字列
(public member object)
char* positive_sign
非負の通貨量を示すために使用される文字列
(public member object)
char* negative_sign
負の通貨量を示すために使用される文字列
(public member object)

ローカル通貨数値書式設定パラメータ

char* currency_symbol
現在のCロケールで使用される通貨記号
(public member object)
char frac_digits
通貨数量の表示における小数点以下の桁数
(public member object)
char p_cs_precedes
1 非負の値の前に currency_symbol が配置される場合は 1 、後ろの場合は 0
(public member object)
char n_cs_precedes
1 負の値の前に currency_symbol が配置される場合は 1 、後ろの場合は 0
(public member object)
char p_sep_by_space
currency_symbol positive_sign と非負の通貨値の間の区切りを示す
(public member object)
char n_sep_by_space
currency_symbol negative_sign と負の通貨値の間の区切りを示す
(public member object)
char p_sign_posn
非負の通貨値における positive_sign の位置を示す
(public member object)
char n_sign_posn
負の通貨値における negative_sign の位置を示す
(public member object)

国際通貨数値書式設定パラメータ

char* int_curr_symbol
現在のCロケールで国際通貨名として使用される文字列
(public member object)
char int_frac_digits
国際通貨数量の表示時に小数点以下に表示する桁数
(public member object)
char int_p_cs_precedes
(C99)
1 非負の国際通貨値の前に int_curr_symbol が配置される場合は 1 、後ろの場合は 0
(public member object)
char int_n_cs_precedes
(C99)
1 負の国際通貨値の前に int_curr_symbol が配置される場合は 1 、後ろの場合は 0
(public member object)
char int_p_sep_by_space
(C99)
int_curr_symbol positive_sign と非負の国際通貨値の間の区切りを示す
(public member object)
char int_n_sep_by_space
(C99)
int_curr_symbol negative_sign と負の国際通貨値の間の区切りを示す
(public member object)
char int_p_sign_posn
(C99)
非負の国際通貨値における positive_sign の位置を示す
(public member object)
char int_n_sign_posn
(C99)
負の国際通貨値における negative_sign の位置を示す
(public member object)

grouping および mon_grouping によって指されるC文字列の文字は、その数値に従って解釈されます。終端の ' \0 ' に達すると、最後に確認された値が残りの桁に対して繰り返されると見なされます。 CHAR_MAX に達すると、それ以上の桁はグループ化されません。一般的な3桁ごとのグループ化は " \003 " です。

p_sep_by_space n_sep_by_space int_p_sep_by_space int_n_sep_by_space の値は以下のように解釈されます:

0 通貨記号と数値の間にスペースを挿入しない
1 符号は通貨記号に隣接し、数値はスペースで区切られる
2 符号は数値に隣接し、通貨記号はスペースで区切られる

p_sign_posn n_sign_posn int_p_sign_posn int_n_sign_posn の値は以下のように解釈されます:

0 値と通貨記号を括弧で囲んで符号を表す
1 値と通貨記号の前に符号を配置
2 値と通貨記号の後に符号を配置
3 通貨記号の前に符号を配置
4 通貨記号の後に符号を配置

#include <locale.h>
#include <stdio.h>
int main(void)
{
    setlocale(LC_ALL, "ja_JP.UTF-8");
    struct lconv* lc = localeconv();
    printf("Japanese currency symbol: %s(%s)\n", lc->currency_symbol, lc->int_curr_symbol);
}

出力例:

Japanese currency symbol: ¥(JPY )

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.11/2 ローカライゼーション <locale.h> (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.11/2 ローカライゼーション <locale.h> (p: TBD)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.11/2 ローカライゼーション <locale.h> (p: 223)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.11/2 ロケール <locale.h> (p: 204)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.4 ローカライゼーション <locale.h>

関連項目

現在のロケールの数値および通貨書式設定の詳細を問い合わせる
(関数)