16.8 locale
为了使C语言在全世界范围内更为通用,标准定义了locale,这是一组特定的参数,每个国家/地区可能各不相同。在缺省情况下是“C”locale,编译器也可以定义其他的locale。修改locale可能影响库函数的运行方式。修改locale的效果将在本节的最后进行描述。
setlocale函数的原型如下所示,它用于修改整个或部分locale。
char *setlocale( int category, char const *locale );
category参数指定locale的哪个部分需要进行修改。它所允许出现的值列于表16.5中。
如果setlocale的第2个参数为NULL,函数将返回一个指向给定类型的当前locale的名字的指针。这个值可能被保存并在后续的setlocale函数中使用,用来恢复以前的locale。如果第2个参数不是NULL,它指定需要使用的新locale。如果函数调用成功,它将返回新locale的值,否则返回一个NULL指针,原来的locale不受影响。
值 | 修改 |
LC_ALL | 整个locale |
LC_COLLATE | 对照序列,它将影响strcoll和strxfrm函数的行为 |
LC_CTYPE | 定义于ctype.h中的函数所使用的字符类型分类信息 |
LC_MONETARY | 在格式化货币值时使用的字符 |
LC |