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
用作小数点字符
(公开成员对象)
char* thousands_sep
用于分隔小数点前数字组的字符
(公开成员对象)
char* grouping
指示数字组大小的字符串
(公开成员对象)

货币数值格式化参数

char* mon_decimal_point
用作小数点分隔符的字符
(公开成员对象)
char* mon_thousands_sep
小数点前数字分组的分隔符
(公开成员对象)
char* mon_grouping
表示数字分组大小的字符串
(公开成员对象)
char* positive_sign
表示非负货币值的字符串
(公开成员对象)
char* negative_sign
表示负货币值的字符串
(公开成员对象)

本地货币数值格式化参数

char* currency_symbol
当前C区域设置中使用的货币符号
(公开成员对象)
char frac_digits
货币数值中显示的小数点后位数
(公开成员对象)
char p_cs_precedes
1 表示 currency_symbol 置于非负数值之前, 0 表示置于之后
(公开成员对象)
char n_cs_precedes
1 表示 currency_symbol 置于负数值之前, 0 表示置于之后
(公开成员对象)
char p_sep_by_space
指示 currency_symbol positive_sign 与非负货币数值之间的分隔方式
(公开成员对象)
char n_sep_by_space
指示 currency_symbol negative_sign 与负货币数值之间的分隔方式
(公开成员对象)
char p_sign_posn
指示 positive_sign 在非负货币数值中的位置
(公开成员对象)
char n_sign_posn
指示 negative_sign 在负货币数值中的位置
(公开成员对象)

国际货币数值格式化参数

char* int_curr_symbol
当前C区域设置中用作国际货币名称的字符串
(公开成员对象)
char int_frac_digits
国际货币金额中小数点后要显示的位数
(公开成员对象)
char int_p_cs_precedes
(C99)
1 表示 int_curr_symbol 位于非负国际货币值之前, 0 表示位于之后
(公开成员对象)
char int_n_cs_precedes
(C99)
1 表示 int_curr_symbol 位于负国际货币值之前, 0 表示位于之后
(公开成员对象)
char int_p_sep_by_space
(C99)
指示 int_curr_symbol positive_sign 与非负国际货币值之间的分隔方式
(公开成员对象)
char int_n_sep_by_space
(C99)
指示 int_curr_symbol negative_sign 与负国际货币值之间的分隔方式
(公开成员对象)
char int_p_sign_posn
(C99)
指示非负国际货币值中 positive_sign 的位置
(公开成员对象)
char int_n_sign_posn
(C99)
指示负国际货币值中 negative_sign 的位置
(公开成员对象)

指向 grouping mon_grouping 的C字符串中的字符将根据其数值进行解释。当遇到终止符 ' \0 ' 时,最后出现的数值将被视为对剩余数字的重复分组。若遇到 CHAR_MAX ,则后续数字不再分组。典型的三位数字分组格式为 " \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> (页码: 待定)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.11/2 本地化 <locale.h> (页: TBD)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.11/2 本地化 <locale.h> (页码: 223)
  • C99标准(ISO/IEC 9899:1999):
  • 7.11/2 本地化 <locale.h> (页码:204)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 4.4 本地化 <locale.h>

参阅

查询当前区域设置的数值和货币格式化详细信息
(函数)
C++ 文档 关于 lconv