VS调试:字符串中的字符无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS调试:字符串中的字符无效相关的知识,希望对你有一定的参考价值。

场景

网络发送过来的报文是utf-8编码的Json数据,其中保存有中文。使用Jsoncpp解析的时候

单步调试获取到的变量,在获取包含中文变量的时候,查看std::string字符串变量,提示;字符串中的字符无效


解析

VS高版本新加的功能,如果字符串中包含有非打印字符,或者utf8编码,调试器自动显示:

字符串中的字符无效。在这里被误导过,以为Jsoncpp无法正确解析utf-8编码的格式,其实Jsoncpp已经解析出内容,只是无法在这种情况下显示中文,必须是GBK编码才行


历程

std::string strName = root["name"].asString(); //name里面的中文字符:风雨在途

这个时候定位到strName,提示字符串中的字符无效

解决

将strName添加监视,在名称strName之后,添加,s8,就可以正常显示了


例子

名称                    值

strName,s8 风雨在途


以上是关于VS调试:字符串中的字符无效的主要内容,如果未能解决你的问题,请参考以下文章

Python中的字符串比较:is vs. == [重复]

XML(反)序列化无效字符串在c#中不一致?

字符串变量名称 Date 在调试器中的行为很奇怪

第一次个人作业(代码编写调试debug相关)

JQuery $.post 在 VS 2010 实例中有效,但在我在 IIS 7.5 中部署时无效

将字符串转换为数字 - parseInt() vs Number(); [复制]