c语言setlocale第二个参数,关于setlocale函数的参数问题

先上代码

wchar_t ss[10];

char *p;

ss[0] = _T('中');

ss[1] = _T('文');

ss[2] = _T('\0');

p = setlocale(LC_ALL, "zh-CN");

wprintf(L"%ls\n", ss);

printf("%s\n", p);

在用宽字符数组输出中文的时候用setlocale来设置地域,在使用第二个参数的时候出现了一点问题

(运行环境VC2010Express)

setlocale(LC_ALL, "chs");

或者

setlocale(LC_ALL, "");

都可以能正常输出中文汉字

7107a5b325a3bc71b0c85eb693f544b2.png

但是我在微软的手册里面查不到chs这个参数,如下图

175d26c0bcfb8e8893e3c2941ddc5aef.png

但是上图的所有参数,无论是简体中文还是繁体中文的参数在VC2010下使用都无法正常使用(意思是setlocale失败,返回值为NULL)

例如:

p = setlocale(LC_ALL, "zh-CN");

运行结果:

0a87c5e7f8866fcd9dcd3c72b0110d94.png

但是我在VS2017下测试了setlocale函数,发现上面微软手册里的所有简体中文还是繁体中文的参数都可以正常使用

p = setlocale(LC_ALL, "zh-CN");

运行结果:

9a52c95e0f76ce36543ac38efa9b5adb.png

还有一点非常奇怪的,我随便输了一个手册里面没有的参数,居然还能正常输出中文

862cf329b526d5f045bad3b7510eb440.png

a02618c406a683f3685abfbad5bc418e.png

问题二:为什么在VC2010下,上面这些参数不能用,但是在VS2017下却都可以使用

问题三:为什么随便输入了一个参数zh-NC(手册里没有这个参数),却仍然能输出中文汉字

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值