在头文件中定义#define LC_ALL / *实现定义* /
#define LC_COLLATE / *实现定义* /
#define LC_CTYPE / *实现定义* /
#define LC_MONETARY / *实现定义* /
#define LC_NUMERIC / *实现定义* /
#define LC_TIME / *实现定义* /
上述每个宏常量都扩展为具有不同值的整数常量表达式,这些值适合用作第一个参数setlocale。
不变说明LC_ALL选择整个C语言环境
LC_COLLATE选择C语言环境的归类类别
LC_CTYPE选择C语言环境的字符分类类别
LC_MONETARY选择C语言环境的货币格式类别
LC_NUMERIC选择C语言环境的数字格式化类别
LC_TIME选择C语言环境的时间格式类别
额外的宏常量,其名称LC_后面跟着至少一个大写字母,可以在中定义locale.h。例如,POSIX规范要求LC_MESSAGES(其控制,除其他事项外,perror和strerror),和GNU C库另外限定LC_PAPER,LC_NAME,LC_ADDRESS,LC_TELEPHONE,LC_MEASUREMENT,和LC_IDENTIFICATION。
例
#include #include #include #include
int main(void){ setlocale(LC_ALL, "en_US.UTF-8"); // the C locale will be the UTF-8 enabled English setlocale(LC_NUMERIC, "de_DE"); // decimal dot will be German setlocale(LC_TIME, "ja_JP"); // date/time formatting will be Japanese
wchar_t str[100];
time_t t = time(NULL); wcsftime(str, 100, L"%A %c", localtime(&t)); wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);}
输出:
Number: 3,14Date: 月曜日 2011年12月19日 18時04分40秒
参考
C11标准(ISO/IEC 9899:2011):7.11 / 3本地化(p:224)
C99标准(ISO/IEC 9899:1999):7.11/3本地化(p:205)
C89/C90标准(ISO/IEC 9899:1990):4.4本地化
另请参阅
setlocale获取并设置当前的C语言环境(函数)
| C++ documentation for locale categories |