C语言locale头文件(locale.h)中setlocale函数的用法及代码示例。
用法:
char* setlocale (int category, const char* locale);
设置或检索语言环境
语言环境包含有关如何解释和执行某些输入/输出以及转换操作的信息,并考虑了位置和特定于语言的设置。
大多数运行环境都会根据用户首选项或本地化设置某些本地化信息。但是,独立于该系统语言环境,所有C程序在开始时都具有"C"语言环境集,这是一个相当中性的语言环境,具有最少的语言环境信息,可以使程序的结果可预测。为了在环境中使用默认的语言环境设置,可以使用
""
作为论点locale。程序启动时,选择的语言环境是
"C" locale
,与通过调用设置的相同setlocale(LC_ALL,"C")
。可以通过调用选择在环境中选择的语言环境设置
setlocale(LC_ALL,"")
。受此函数调用影响的当前语言环境部分由参数指定category。
参数
- category
- 受影响的语言环境的部分。它是以下常量值之一,在其中定义为宏<clocale>:
值 受影响的区域的一部分 LC_ALL 整个语言环境。 LC_COLLATE 影响行为strcoll和strxfrm。 LC_CTYPE 影响字符处理函数(<cctype>, 除了isdigit和isxdigit),以及多字节和宽字符函数。 LC_MONETARY 影响由返回的货币格式设置信息localeconv。 LC_NUMERIC 影响格式化的输入/输出操作和字符串格式化函数中的小数点字符,以及返回的非货币信息localeconv。 LC_TIME 影响行为strftime。 - locale
- 包含C语言环境名称的C字符串。这些是特定于系统的,但是至少必须存在以下两个语言环境:
如果此参数的值为区域名称 描述 "C"
最小的"C"语言环境 ""
环境的默认语言环境 NULL
,该函数不会对当前语言环境进行任何更改,但是函数仍会返回当前语言环境的名称。
返回值
成功后,指向C字符串的指针,该字符串标识当前为category。如果category是LC_ALL并且将语言环境的不同部分设置为不同的值,返回的字符串以库实现之间可能有所不同的格式提供此信息。如果该函数无法设置新的语言环境,则不会进行修改,并且将返回空指针。
示例
/* setlocale example */
#include <stdio.h> /* printf */
#include <time.h> /* time_t, struct tm, time, localtime, strftime */
#include <locale.h> /* struct lconv, setlocale, localeconv */
int main ()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [80];
struct lconv * lc;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
int twice=0;
do {
printf ("Locale is: %s\n", setlocale(LC_ALL,NULL) );
strftime (buffer,80,"%c",timeinfo);
printf ("Date is: %s\n",buffer);
lc = localeconv ();
printf ("Currency symbol is: %s\n-\n",lc->currency_symbol);
setlocale (LC_ALL,"");
} while (!twice++);
return 0;
}
运行前面的代码时,可能的输出之一是:
Locale is: C Date is: 01/15/07 13:33:47 Currency symbol is: - Locale is: English_United States.1252 Date is: 1/15/07 1:33:47 PM Currency symbol is: $ - |
相关用法
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C setlocale function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。