jsoncpp:将字符串转换为双精度
jsoncpp: convert string to double
我正在尝试从 JSON 对象中获取一个我知道代表小数的字符串,并将其分配给 C++ 中的双精度数。
人们会期望 asDouble()
完成这项工作,但事实并非如此。例如,如果我们将数组 ["0.4983", "4387"]
放在变量 Json::Value arr
中,则执行
double x = arr[0].asDouble()
抛出异常Value is not convertible to double.
执行此操作的推荐方法是什么(在 C++ 11 中)?
我的猜测是 "0.4983"
是一个字符串,所以 jsoncpp 拒绝将其转换为双精度。这是合理的,因为通常将 "abc"
之类的字符串转换为 double 是没有意义的。
你需要的是手动将字符串转换为double;在 C++11 中它将是 stod.
看看源码:https://github.com/oftc/jsoncpp/blob/master/src/lib_json/json_value.cpp#L852
显然在 jsoncpp
中只有 int
、uint
、real
、null
和 boolean
可以强制转换为 double
. string
不在列表中。
Whosebug 上有很多答案,说明如何自己进行字符串-> 双重转换。其中之一:C++ string to double conversion
此外还有 Value::isConvertibleTo()
允许您在运行时查找值是否可转换为类型:https://github.com/oftc/jsoncpp/blob/master/src/lib_json/json_value.cpp#L924
我正在尝试从 JSON 对象中获取一个我知道代表小数的字符串,并将其分配给 C++ 中的双精度数。
人们会期望 asDouble()
完成这项工作,但事实并非如此。例如,如果我们将数组 ["0.4983", "4387"]
放在变量 Json::Value arr
中,则执行
double x = arr[0].asDouble()
抛出异常Value is not convertible to double.
执行此操作的推荐方法是什么(在 C++ 11 中)?
我的猜测是 "0.4983"
是一个字符串,所以 jsoncpp 拒绝将其转换为双精度。这是合理的,因为通常将 "abc"
之类的字符串转换为 double 是没有意义的。
你需要的是手动将字符串转换为double;在 C++11 中它将是 stod.
看看源码:https://github.com/oftc/jsoncpp/blob/master/src/lib_json/json_value.cpp#L852
显然在 jsoncpp
中只有 int
、uint
、real
、null
和 boolean
可以强制转换为 double
. string
不在列表中。
Whosebug 上有很多答案,说明如何自己进行字符串-> 双重转换。其中之一:C++ string to double conversion
此外还有 Value::isConvertibleTo()
允许您在运行时查找值是否可转换为类型:https://github.com/oftc/jsoncpp/blob/master/src/lib_json/json_value.cpp#L924