首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsoncpp:将字符串转换为双精度

jsoncpp:将字符串转换为双精度
EN

Stack Overflow用户
提问于 2017-08-04 20:30:34
回答 2查看 3.4K关注 0票数 1

我正在尝试从一个JSON对象中获取一个字符串,并将其赋给C++中的双精度值。

人们会期望asDouble()来完成这项工作,但事实并非如此。例如,如果我们将数组["0.4983", "4387"]放在变量Json::Value arr中,则执行以下操作

代码语言:javascript
复制
double x = arr[0].asDouble()

引发异常Value is not convertible to double.

推荐的方法是什么(在C++ 11中)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-05 02:18:53

我猜测"0.4983"是一个字符串,所以jsoncpp拒绝将其转换为双精度型。这是合理的,因为通常情况下,将"abc"之类的字符串转换为double是没有意义的。

您需要的是手动将字符串转换为stod;在C++11中,它将是double。

票数 2
EN

Stack Overflow用户

发布于 2017-08-05 02:25:47

只需看一下源代码:https://github.com/oftc/jsoncpp/blob/master/src/lib_json/json_value.cpp#L852

显然,在jsoncpp中,只有intuintrealnullboolean可以被强制为doublestring不在列表中。

在stackoverflow上有许多答案解释了如何自己进行字符串->双重转换。其中之一:C++ string to double conversion

此外,还有一个允许您在运行时查找某个值是否可转换为类型的Value::isConvertibleTo()https://github.com/oftc/jsoncpp/blob/master/src/lib_json/json_value.cpp#L924

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45506919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档