C 编程/locale.h
在计算中,locale.h 是一个用于本地化的 C 编程语言头文件。该头文件提供两个关键函数:localeconv
和 setlocale
。前者提供对当前区域设置的访问,而后者允许设置当前区域设置。该头文件还定义了结构 lconv
,该结构存储有关给定区域设置的信息,包括对数字和货币显示的本地偏好。
#include <locale.h>
char *setlocale(int category, const char *locale);
struct lconv *localeconv(void);
setlocale()
函数用于设置或查询程序的当前区域设置。
如果 locale
不是 NULL
,则程序的当前区域设置会根据参数进行修改。参数 category
确定程序的当前区域设置中哪些部分应该被修改。
如果 locale
是 NULL
,则只查询当前区域设置,不进行修改。
localeconv()
函数返回一个指向当前区域设置的 struct lconv
的指针。该结构在下面下一节中显示,并包含与区域设置类别 LC_NUMERIC 和 LC_MONETARY 相关联的所有值。程序也可以使用函数 printf()
和 strfmon()
,它们的行为符合使用的实际区域设置。
struct lconv
包含以下字段
char *decimal_point;
基数字符。
char *thousands_sep;
基数字符左侧数字分组的分隔符。
char *grouping;
每个元素都是一组中的数字数量;索引越高的元素越靠左。值为 CHAR_MAX
的元素表示不再进行分组。值为 0
的元素表示所有更靠左的分组都使用前面的元素。
char *int_curr_symbol;
前三个字符是来自 ISO 4217 的货币符号。第四个字符是分隔符。第五个字符是 '\0'
。
char *currency_symbol;
本地货币符号。
char *mon_decimal_point;
与上面的 decimal_point
相同。
char *mon_thousands_sep;
与上面的 thousands_sep
相同。
char *mon_grouping;
与上面的 grouping
相同。
char *positive_sign;
正值的符号。
char *negative_sign;
负值的符号。
char int_frac_digits;
国际小数位数。
char frac_digits;
本地小数位数。
char p_cs_precedes;
如果 currency_symbol
位于正值之前,则为 1
,如果位于之后,则为 0
。
char p_sep_by_space;
如果空格将 currency_symbol
与正值隔开,则为 1
。
char n_cs_precedes;
如果 currency_symbol
位于负值之前,则为 1
,如果位于之后,则为 0
。
char n_sep_by_space;
如果空格将 currency_symbol
与负值隔开,则为 1
。
char p_sign_posn;
char n_sign_posn;
正负号位置
0
:括号包围数量和currency_symbol
。1
:符号字符串位于数量和currency_symbol
之前。2
:符号字符串位于数量和currency_symbol
之后。3
:符号字符串紧挨着currency_symbol
之前。4
:符号字符串紧挨着currency_symbol
之后。
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
/* Locale is set to "C" before this. This call sets it
to the "current locale" by reading environment variables: */
setlocale(LC_ALL, "");
const struct lconv * const currentlocale = localeconv();
printf("In the current locale, the default currency symbol is: %s\n",
currentlocale->currency_symbol);
return EXIT_SUCCESS;
}
- locale.h by OpenGroup
- localeconv by OpenGroup
- setlocale by OpenGroup