wstring wcin wcout 汉字字符串

本文介绍如何正确从控制台输入包含汉字的wstring,并解决由此产生的乱码问题。通过设置locale来确保输入的汉字能够被正确地按照Unicode编码读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值