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

标签 python c++ boost

我是 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/

相关文章:

python - 如何根据行/列名称将一个数据框的列附加为另一个数据框的行?

c++ - 在 QT 的主窗口中显示 printf 输出

c++ - 使用 std::tr1::function(或 boost::function)创建多播事件

python - 数据流模板中的动态 BigQuery 查询

python - 正则表达式 : replace comma in string, Python

C++调用线程构造函数

c++ - 我应该使用哪个 boost 类来存储人类年龄

c++ - 一个简单的 http C++ 服务器应该执行哪些步骤让用户通过 OpenID 身份验证登录?

python导入根文件夹并使用所有子文件夹

c++ - 链式操作的重载 +=