lconv

来自cppreference.com
< c‎ | locale
定义于头文件 <locale.h>
struct lconv;

struct lconv包含C本地环境所定义的数值及货币格式规则。此结构体的对象必须通过localeconv取得。struct lconv的成员是类型为charchar*的值。除decimal_point的每个char*类型成员都有可能指向空字符(即为空C字符串)。类型为char的成员均为非负整数,每一个都可能是CHAR_MAX,若其对应的值在当前C本地环境中不可用。

目录

[编辑] 成员函数

[编辑] 非货币数值格式参数

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
currency_symbol置于非负值前则为1,置于其后则为0
(公共成员对象)
char n_cs_precedes
currency_symbol置于负值前则为1,置于其后则为0
(公共成员对象)
char p_sep_by_space
指示currency_symbolpositive_sign以及非负货币值的分隔方式
(公共成员对象)
char n_sep_by_space
指示currency_symbolnegative_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)
currency_symbol置于非负国际货币值前则为1,置于其后则为0
(公共成员对象)
char int_n_cs_precedes
(C99)
currency_symbol置于负国际货币值前则为1,置于其后则为0
(公共成员对象)
char int_p_sep_by_space
(C99)
指示currency_symbolpositive_sign以及非负国际货币值的分隔方式
(公共成员对象)
char int_n_sep_by_space
(C99)
指示currency_symbolnegative_sign以及负国际货币值的分隔方式
(公共成员对象)
char int_p_sign_posn
(C99)
指示positive_sign在非负国际货币值中的位置
(公共成员对象)
char int_n_sign_posn
(C99)
指示negative_sign在负货币值中的位置
(公共成员对象)


groupingmon_grouping所指向的C字符串的字符解释为其数字值。当遇到终止的'\0'时,会假设余下的数字重复最后一个见到的值。若遇到CHAR_MAX,则不会再对剩下的数字分组。这时典型的三位分组是"\003"

p_sep_by_spacen_sep_by_spaceint_p_sep_by_spaceint_n_sep_by_space的值解释如下:

0 通货符号和值无空格分隔
1 正负号紧贴通货符号,值由空格分隔
2 正负号紧贴值,通货符号由空格分割

p_sign_posnn_sign_posnint_p_sign_posnint_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)

[编辑] 参考

  • C11 standard (ISO/IEC 9899:2011):
  • 7.11/2 Localization <locale.h> (p: 223)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.11/2 Localization <locale.h> (p: 204)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.4 LOCALIZATION <locale.h>

[编辑] 参阅

查询当前本地环境的数值及货币格式细节
(函数) [edit]
lconvC++文档