当前位置: C语言 -- 标准库 -- <locale.h> -- LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME

LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME宏


概要:
#define LC_ALL value //value值由具体实现定义。
#define LC_COLLATE value //value值由具体实现定义。
#define LC_CTYPE value //value值由具体实现定义。
#define LC_MONETARY value //value值由具体实现定义。
#define LC_NUMERIC value //value值由具体实现定义。
#define LC_TIME value //value值由具体实现定义。

描述:

上述宏会扩展为不同值的整型常量表达式;可用作setlocale函数的第一个参数(ISO/IEC 9945-2标准指定了可用于C程序的语言环境和字符映射格式。)。语言环境是用户环境的子集,取决于语言文化的约定;每个类别都由其名称标识,控制语言环境的特定方面。宏LC_ALL命名程序的整个语言环境;其它宏仅命名程序语言环境的一部分。

描述
LC_ALL 该宏确定语言环境所有类别的值,影响整个语言环境。
LC_COLLATE 该宏确定语言环境中字符的排序规则,影响strcollwcscollstrxfrmwcsxfrm函数。
LC_CTYPE 该宏确定语言环境中的字符分类和大小写转换,影响字符处理函数(<ctype>头文件中声明的函数,isdigitisxdigit函数除外。)、多字节字符函数、宽字符函数。
LC_MONETARY 该宏确定语言环境中的货币格式,影响localeconv函数返回的货币格式。
LC_NUMERIC 该宏确定语言环境中数字的非货币格式,影响格式化输入/输出函数和字符串转换函数的小数点字符以及localeconv函数返回的非货币格式信息。
LC_TIME 该宏确定语言环境中的日期和时间格式,影响strftimewcsftime函数。

具体实现中,还可能定义一些以LC_和一个大写字母开头的宏。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
/*宏LC_ALL范例*/

#include <locale.h>
#include <stdio.h>

int main(void)
{
    const char *region[] = {"en-US","en-GB","en-AU"};
    struct lconv *lc;

    for (int i = 0; i < 3; ++i)
    {
        setlocale(LC_ALL, region[i]);
        lc = localeconv();

        printf("Local currency symbol: %s\n", lc->currency_symbol);
        printf("International currency symbol: %s\n", lc->int_curr_symbol);
    }

    return 0;
}

输出:

Local currency symbol: $

International currency symbol: USD

Local currency symbol: £

International currency symbol: GBP

Local currency symbol: $

International currency symbol: AUD

注:使用Visual Studio编译。


相关内容:
setlocale 改变或者查询语言环境的函数。