使用BOOST将Python浮点数转换为C++双精度数
我刚开始接触Python和C++的接口。在一个Python文件里,我有一个包含列表和浮点数的字典。我想把这些Python对象提取到C++的变量中。我可以把列表提取到向量变量里,但对于浮点数类型却做不到。
这是我在dict.py里的字典:
ATM__INTERPOLATION_CUBE = {
"xOrigin": xOrigin,
"yOrigin": yOrigin,
"zOrigin": zOrigin,
"xEnd" : xEnd,
"yEnd" : yEnd,
"zEnd" : zEnd,
"point_xdensity":point_xdensity,
"point_ydensity":point_ydensity,
"point_zdensity":point_zdensity,
"short_Space_x" : 0.25,
"short_Space_y" : 0.25,
"short_Space_z" : 0.25}
ATM__TYPE = "3D_CUBE"
在我的C++脚本中,我创建了一个名为myconfig的Python字典类型的对象。
python::dict myconfig = ctl->scanConfig("ATM__INTERPOLATION_CUBE", python::dict(), True);
然后我创建了一个Python列表,并把每个列表存储到一个新的Python列表中。
>
python::list xOrigin_list(myconfig["xOrigin"]);
>python::list yOrigin_list(myconfig["yOrigin"]);
接着,我使用循环把这个Python列表提取到我的C++向量变量中。
> for(init;condt;incr)
> xOrigin.push_back(python::extract <double>(xOrigin_list[i]));
> yOrigin.push_back(python::extract<double>(yOrigin_list[i]));
但是上面的过程对浮点数或长整型不适用 :(
python::long short_Space_x_fl(myconfig["short_Space_x"]);
> short_Space_x = python::extract<double>(short_Space_x_fl);
这给我带来了错误。有人能告诉我如何从Python提取浮点数或长整型的值,并存储到C++的双精度变量中吗?
var.cc:18:11: error: expected unqualified-id before ‘long’
提前谢谢大家!
1 个回答
2
只有当你想把一个列表提取到一个向量里时,上面的用法才有效。但是如果只是提取单个数据(比如整数、浮点数或长整型),那么提取的语法就很简单了。
double var_name = python::extract<double>(python_dict_obj["python_key"]);
这段代码会把字典中指定键的浮点值存储到C++的一个变量里。