wstring wcin wcout 汉字字符串

来源:互联网 发布:网络招商代理 编辑:程序博客网 时间:2024/05/16 05:30

想从控制台输入含汉字字符串到wstring(按unicode字符集存储),问题如下:

wstring wstr1 = L"李66";wstring wstr2;wcin >> wstr2; //输入 李66

wstr2汉字“李”成了二个乱码!

二者内存中的数据:

wstr1 : 4e 67 36 00 36 00

wstr2 : co 00 ee 00 36 00 36 00

【原因】输入的“李66”刚开始为c风格字符串,编码为 co ee 36 36(多字节字符集,汉字为GBK编码),wcin按单字节读取并转换为unicode编码方式到wstr2。

【解决】

wstring wstr3;wcin.imbue(locale("chs")); //指定汉字按两个字节读wcin >> wstr3;
对于wcout也要先设置一下,否则啥也输出不来。


参考:

1、点击打开链接

0 0