Sun Studio 12:C 用户指南

6.9.2 setlocale() 函数

setlocale() 函数是指向程序语言环境的接口。通常,对于那些采用调用国家(地区)惯例的程序,在程序执行路径的开头部分都应发出一个调用,如:


#include <locale.h>
/*...*/
setlocale(LC_ALL, "");

。该调用导致程序的当前语言环境更改为相应的本地版本,因为 LC_ALL 是指定整个语言环境而不是某个种类的宏。以下是标准种类:

LC_COLLATE

排序信息 

LC_CTYPE

字符分类信息 

LC_MONETARY

货币打印信息 

LC_NUMERIC

数值打印信息 

LC_TIME

日期和时间打印信息 

这些宏中的任何宏均可作为 setlocale() 的第一个参数传递以指定该种类。

setlocale() 函数返回给定种类的当前语言环境的名称(或 LC_ALL),当其第二个参数为空指针时,它仅用于查询。因此,如下代码可用于在有限持续时间内更改语言环境或其中一部分:


#include <locale.h>
/*...*/
char *oloc;
/*...*/
oloc = setlocale(LC_category, NULL);
if (setlocale(LC_category, "new") != 0)
{
        /* use temporarily changed locale */
    (void)setlocale(LC_category, oloc);
}

大多数程序不需要此功能。