使用BOOST将python float转换为c ++ double

时间:2014-08-25 15:34:17

标签: python c++ boost

我是python c ++界面的新手。我在python文件中有一个list和float变量的字典。我将这个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 ++脚本中,我创建了一个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 ++向量变量中
> 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中提取float / long类型的值并存储在c ++ double变量中?

var.cc:18:11: error: expected unqualified-id before ‘long’

提前致谢

1 个答案:

答案 0 :(得分:2)

仅当将列表提取到向量中时,上述用法才有效。但是为了提取单个数据(int,float,long),提取语法是直截了当的,

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

这会将给定键的字典中的float值存储到c ++

的变量中