记录:vs中使用Unicode字符集时,wcout的问题

问题:使用的是vs2008,默认的字符集是多字节字符集,由于项目需要将字符集改成了UNICode,编码全部改写完并且一遍测试没问题。

代码中使用了正则匹配,在第一遍测试时是没有问题的,但是循环跑到第二次就会出问题。正则匹配总是出错。

调试:通过对相关正则匹配字符串二进制分析,发现第一遍是根据UNICODE编码每两个字节去匹配,执行完一遍后,正则匹配会只匹配UNICODE的第一个字节,也就是变成了单字节匹配。通过排查发现代码中的wcout.imbue(locale("chs"));将其locale设为本地语言,改变了编码方式,输出GBK编码的汉字。影响了正则匹配的方式。

问题解决方法:cout << T2A(Cstring) << endl;



UNICODE字符集下涉及到单个字符操作时慎重使用wcout.imbue(locale("chs"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值