c语言setlocale第二个参数,setlocale_本地化支持 | Localization support_C_参考手册_非常教程...

setlocale函数用于在C语言环境中安装指定的系统语言环境。它可以改变区域设置敏感的C库函数的行为,如数字格式和日期显示。示例中,程序分别设置了数值、时间的区域设置,影响了输出的格式。需要注意的是,setlocale的调用可能会影响全局状态,不适用于多线程环境。
摘要由CSDN通过智能技术生成

setlocale

在头文件中定义

char * setlocale(int category,const char * locale);

setlocale函数将指定的系统语言环境或其部分作为新的C语言环境安装。这些修改仍然有效,并会影响到所有区域设置敏感的C库函数的执行,直到下一次调用setlocale。如果locale是空指针,则setlocale查询当前的C语言环境而不修改它。

参数

category

-

区域设置类别标识符,其中一个LC_xxx宏。可能为null。

locale

-

系统特定的区域设置标识符。对于用户首选语言环境可以是“”,对于最小语言环境可以是“C”

返回值

指向一个以null结尾的空字符串的指针,该字符串在应用更改后标识C语言环境(如果有)或空指针失败。

返回的字符串以及此次调用中使用的类别的副本setlocale可能会稍后在程序中用于将语言环境恢复到此调用结束时的状态。

注意

在程序启动期间,等同于setlocale(LC_ALL, "C");在任何用户代码运行之前执行。

虽然返回类型是char*,但修改指向的字符是未定义的行为。

由于setlocale修改影响的区域设置相关的函数执行的全局状态,它是不确定的行为,从一个线程调用它,而另一个线程正在执行任意的功能如下:fprintf,isprint,iswdigit,localeconv,tolower,fscanf,ispunct,iswgraph,mblen,toupper,isalnum,isspace,iswlower,mbstowcs,towlower,isalpha,isupper,iswprint,mbtowc,towupper,isblank,iswalnum,iswpunct,setlocale,wcscoll,iscntrl,iswalpha,iswspace,strcoll,wcstod,isdigit,iswblank,iswupper,strerror,wcstombs,isgraph,iswcntrl,iswxdigit,strtod,wcsxfrm,islower,iswctype, isxdigit.

POSIX还定义了一个名为“POSIX”的语言环境,该语言环境始终可以访问,并且完全等同于默认的最小“C”语言环境。

POSIX还指定返回的指针,不仅仅是指向字符串的内容,可能会通过后续对setlocale的调用而失效。

#include

#include

#include

#include

int main(void)

{

// the C locale will be UTF-8 enabled English;

// decimal dot will be German

// date and time formatting will be Japanese

setlocale(LC_ALL, "en_US.UTF-8");

setlocale(LC_NUMERIC, "de_DE");

setlocale(LC_TIME, "ja_JP");

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,14

Date: 木曜日 2014年11月06日 09時58分56秒

参考

C11标准(ISO/IEC 9899:2011): 7.11.1.1 setlocale函数(p:224-225)

C99标准(ISO/IEC 9899:1999): 7.11.1.1 setlocale函数(p:205-206)

C89/C90标准(ISO/IEC 9899:1990): 4.4.1.1 setlocale函数

另请参阅

LC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME

locale categories for setlocale (macro constant)

| C ++文档的setlocale |

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值