wstring wcin wcout 汉字字符串

    xiaoxiao2021-12-14  17

    想从控制台输入含汉字字符串到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、点击打开链接

    转载请注明原文地址: https://ju.6miu.com/read-962614.html

    最新回复(0)