python使用BOOST浮点到c++双精度

python float to c++ double using BOOST

本文关键字:c++ 双精度 使用 BOOST python      更新时间:2023-10-16

我是python c++接口新手。我有一个字典的列表和浮点变量在一个python文件。我提取这个python对象到c++变量。我能够提取到向量变量列表。但我无法做同样的浮动类型。

这是我的字典在字典。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字典类型的对象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"]);

然后使用loop

将python列表提取到c++向量变量中
> 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’

thanks in advance

只有当要将列表提取到vector中时,上述用法才有效。但是对于提取单个数据(int, float, long),提取语法是直接的,

double var_name = python::extract<double>(python_dict_obj["python_key"]);

这将把字典中给定键处的浮点值存储到c++的变量