加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于jsoncpp读取浮点数类型字段

发布时间:2020-12-16 19:09:31 所属栏目:百科 来源:网络整理
导读:环境:VS2010SP1、boost 1.55 strVal = boost::lexical_caststd::string(jsonVal.asDouble()); 上面语句转成的浮点会有变化,得用下面的语句代替 try{Json::Value jsonVal = record[key.c_str()];std::string strVal;if (jsonVal.isString()){strVal = jsonV

环境:VS2010SP1、boost 1.55

strVal = boost::lexical_cast<std::string>(jsonVal.asDouble());

上面语句转成的浮点会有变化,得用下面的语句代替

	try
			{
				Json::Value jsonVal = record[key.c_str()];

				std::string strVal;
				if (jsonVal.isString())
				{
					strVal = jsonVal.asString();
				} else if (jsonVal.isBool())
				{
					strVal = jsonVal.asBool()==true?"true":"false";
				} else if (jsonVal.isDouble())
				{
					char szBuf[MAX_PATH] = {0};
					sprintf(szBuf,"%lf",jsonVal.asDouble());
					strVal = szBuf;
				} else if (jsonVal.isInt())
				{
					strVal = boost::lexical_cast<std::string>(jsonVal.asInt());
				} else if (jsonVal.isUInt())
				{
					strVal = boost::lexical_cast<std::string>(jsonVal.asUInt());
				}
				mapRec[key.c_str()]=strVal;
			}
			catch(boost::bad_lexical_cast &e)
			{
			}


再测试,问题解决。猜测是boost::Lexical_cast的问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读