C标准库--地域<locale.h>
简介
locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号。接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两个重要的函数。
库宏
库函数
1)、 char *setlocale(int category, const char *locale)
设置或读取地域化信息。
language_area.codepage
language 表示语言,例如英语或中文;area 表示使用该语言的地区,例如美国或者中国大陆;codepage 表示代码页.
可用的 language 名称列表请猛击: https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/language-strings?view=vs-2019
可用的 area 名称列表请猛击: https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/country-region-strings?view=vs-2019
可用的 codepage 列表请猛击: https://docs.microsoft.com/zh-cn/windows/win32/intl/code-page-identifiers
printf("Locale is: %s\n", setlocale(LC_ALL, "zh-CN"));
2 )、struct lconv *localeconv(void)
设置或读取地域化信息。
struct lconv * lc;setlocale(LC_MONETARY, "it_IT");lc = localeconv();printf("Local Currency Symbol: %s\n",lc->currency_symbol);printf("International Currency Symbol: %s\n",lc->int_curr_symbol);
库结构
typedef struct {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; //如果等于 1,则 currency_symbol 出现在正货币值之前。如果等于 0,则 currency_symbol 出现在正货币值之后。char p_sep_by_space; //如果等于 1,则 currency_symbol 和正货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和正货币值之间不使用空格分隔。char n_cs_precedes; //如果等于 1,则 currency_symbol 出现在负货币值之前。如果等于 0,则 currency_symbol 出现在负货币值之后。char n_sep_by_space; //如果等于 1,则 currency_symbol 和负货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和负货币值之间不使用空格分隔。char p_sign_posn; //表示正货币值中正号的位置。char n_sign_posn; //表示负货币值中负号的位置。} lconv