专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

wchar_t不能输出汉字?解决思路

发布时间:2011-06-29 00:39:14 文章来源:www.iduyao.cn 采编人员:星星草
wchar_t不能输出汉字???
wchar_t cc[] = L"搜素所得税";
cout<<cc<<endl;
为何输出的是地址?而不是汉字?

------解决方案--------------------
C/C++ code
setlocale(0,"chs");
wcout<<cc<<endl;

------解决方案--------------------
C++默认的Locale是EN_US,而且一般终端(尤其是Windows下的)不支持Unicode。所以需要将wchar_t转化为本地编码,这个过程就依赖你设定的locale了。
不过1楼的方法不对,
类似setlocale(LC_ALL, "chs"); ,这样的wprintf需要,也就是Unicode的C运行库函数。
对于wcout这样的C++类,应该用std::wcout.imbue(std::locale("chs"));
注意两者是不能混用的,如果用了一个,另外一种输出方式就会错误。所以不要混用wcout和wprintf。这算是目前C/C++不兼容的BUG

Linux下是可以直接wcout也可以wprintf的,不过它的wchar_t是4字节的编码是UTF-8。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: