我是 python c++ 界面的新手。我在 python 文件中有一个列表和浮点变量的字典。我正在将这个 python 对象提取到 C++ 变量中。能够将列表提取到 vector 变量中。但我无法对浮点类型执行相同的操作。
这是我在 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++ 脚本中,我创建了一个 python dict 类型的对象 myconfig。
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++ vector 变量中
> for(init;condt;incr)
> xOrigin.push_back(python::extract <double>(xOrigin_list[i]));
> yOrigin.push_back(python::extract<double>(yOrigin_list[i]));
但是上述过程不适用于 float 或 long :(
python::long short_Space_x_fl(myconfig["short_Space_x"]);
> short_Space_x = python::extract<double>(short_Space_x_fl);
它给了我一个错误。有人可以告诉我如何从 python 中提取 float/long 类型的值并将其存储在 C++ 双变量中吗?
var.cc:18:11: error: expected unqualified-id before ‘long’
提前致谢
最佳答案
仅当要将列表提取到 vector 中时,上述用法才有效。但对于提取单个数据(int、float、long),提取语法很简单,
double var_name = python::extract<double>(python_dict_obj["python_key"]);
这会将字典中给定键处的浮点值存储到 C++ 的变量中
关于使用 BOOST 将 python float 转换为 c++ double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489429/