您的位置:首页 > 其它

控制台输出中文

2009-07-14 09:47 148 查看
{

char* paName = "测试中";
wchar_t* pwName = L"测试中";

printf(paName); //输出为:测试中
wprintf((wchar_t*)paName); //输出为:空

printf((char*)pwName); //输出为:乱码
wprintf(pwName); //输出为:空
}
如果将程序改写如下,则输出的结果就不一样了
{
char* paName = "测试中";
wchar_t* pwName = L"测试中";

setlocale(LC_ALL, "chs");

printf(paName); //输出为:测试
wprintf((wchar_t*)paName); //输出为:空

printf((char*)pwName); //输出为:乱码
wprintf(pwName); //输出为:测试
}
从上面两个代码片断可以看出:setlocale()对printf()没有影响,同时对char*的字符串也没有影响。唯一受到影响的是wprintf()这个函数了。我通过调试器查看了paName和pwName的字符,他们分别是:

paName :b2e2 cad4 d6d0 …… 应该是CHS编码(也就是代码页936)

wcout.imbue(local("chs");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: