当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 setlocale用法及代码示例


C语言locale头文件(locale.h)中setlocale函数的用法及代码示例。

用法:

char* setlocale (int category, const char* locale);
设置或检索语言环境
设置当前程序要使用的语言环境信息,或者更改整个语言环境或部分语言环境。该函数还可用于通过传递来检索当前语言环境的名称NULL作为参数值locale

语言环境包含有关如何解释和执行某些输入/输出以及转换操作的信息,并考虑了位置和特定于语言的设置。

大多数运行环境都会根据用户首选项或本地化设置某些本地化信息。但是,独立于该系统语言环境,所有C程序在开始时都具有"C"语言环境集,这是一个相当中性的语言环境,具有最少的语言环境信息,可以使程序的结果可预测。为了在环境中使用默认的语言环境设置,可以使用""作为论点locale

程序启动时,选择的语言环境是"C" locale,与通过调用设置的相同setlocale(LC_ALL,"C")

可以通过调用选择在环境中选择的语言环境设置setlocale(LC_ALL,"")

受此函数调用影响的当前语言环境部分由参数指定category

参数

category
受影响的语言环境的部分。它是以下常量值之一,在其中定义为宏<clocale>
受影响的区域的一部分
LC_ALL整个语言环境。
LC_COLLATE影响行为strcollstrxfrm
LC_CTYPE影响字符处理函数(<cctype>, 除了isdigitisxdigit),以及多字节和宽字符函数。
LC_MONETARY影响由返回的货币格式设置信息localeconv
LC_NUMERIC影响格式化的输入/输出操作和字符串格式化函数中的小数点字符,以及返回的非货币信息localeconv
LC_TIME影响行为strftime
locale
包含C语言环境名称的C字符串。这些是特定于系统的,但是至少必须存在以下两个语言环境:
区域名称描述
"C"最小的"C"语言环境
""环境的默认语言环境
如果此参数的值为NULL,该函数不会对当前语言环境进行任何更改,但是函数仍会返回当前语言环境的名称。

返回值

成功后,指向C字符串的指针,该字符串标识当前为category。如果categoryLC_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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。