ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# C 标准库 - <locale.h> ## 简介 **locale.h** 头文件定义了特定地域的设置,比如日期格式和货币符号。接下来我们将介绍一些宏,以及一个重要的结构 **struct lconv** 和两个重要的函数。 ## 库宏 下面列出了头文件 locale.h 中定义的宏,这些宏将在下列的两个函数中使用: | 宏 | 描述 | | --- | --- | | **LC_ALL** | 设置下面的所有选项。 | | **LC_COLLATE** | 影响 strcoll 和 strxfrm 函数。 | | **LC_CTYPE** | 影响所有字符函数。 | | **LC_MONETARY** | 影响 localeconv 函数提供的货币信息。 | | **LC_NUMERIC** | 影响 localeconv 函数提供的小数点格式化和信息。 | | **LC_TIME** | 影响 strftime 函数。 | ## 库函数 下面列出了头文件 locale.h 中定义的函数: | 函数 | 描述 | | --- | --- | | [char \*setlocale(int category, const char \*locale)](c-function-setlocale.html) | 设置或读取地域化信息。 | | [struct lconv *localeconv(void)](c-function-localeconv.html) | 设置或读取地域化信息。 | ## 库结构 ``` 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; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; } lconv ``` 以下是各字段的描述: | 字段 | 描述 | | --- | --- | | **decimal_point** | 用于非货币值的小数点字符。 | | **thousands_sep** | 用于非货币值的千位分隔符。 | | **grouping** | 一个表示非货币量中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组。 | | **int_curr_symbol** | 国际货币符号使用的字符串。前三个字符是由 ISO 4217:1987 指定的,第四个字符用于分隔货币符号和货币量。 | | **currency_symbol** | 用于货币的本地符号。 | | **mon_decimal_point** | 用于货币值的小数点字符。 | | **mon_thousands_sep** | 用于货币值的千位分隔符。 | | **mon_grouping** | 一个表示货币值中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组。 | | **positive_sign** | 用于正货币值的字符。 | | **negative_sign** | 用于负货币值的字符。 | | **int_frac_digits** | 国际货币值中小数点后要显示的位数。 | | **frac_digits** | 货币值中小数点后要显示的位数。 | | **p_cs_precedes** | 如果等于 1,则 currency_symbol 出现在正货币值之前。如果等于 0,则 currency_symbol 出现在正货币值之后。 | | **p_sep_by_space** | 如果等于 1,则 currency_symbol 和正货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和正货币值之间不使用空格分隔。 | | **n_cs_precedes** | 如果等于 1,则 currency_symbol 出现在负货币值之前。如果等于 0,则 currency_symbol 出现在负货币值之后。 | | **n_sep_by_space** | 如果等于 1,则 currency_symbol 和负货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和负货币值之间不使用空格分隔。 | | **p_sign_posn** | 表示正货币值中正号的位置。 | | **n_sign_posn** | 表示负货币值中负号的位置。 | 下面的值用于 **p_sign_posn** 和 **n_sign_posn**: | 值 | 描述 | | --- | --- | | 0 | 封装值和 currency_symbol 的括号。 | | 1 | 放置在值和 currency_symbol 之前的符号。 | | 2 | 放置在值和 currency_symbol 之后的符号。 | | 3 | 紧挨着放置在值和 currency_symbol 之前的符号。 | | 4 | 紧挨着放置在值和 currency_symbol 之后的符号。 |