2011-08-16 217 views
0

如何将C++字符串传递给我的Python函数?我想在我的C++应用程序中获取字符串并在Python中解析它将C++字符串传递给Python

+1

查看[boost :: python](http://www.boost.org/doc/libs/1_47_0/libs/python/doc/) – GWW

+0

或阅读C API部分中的文档。 –

+0

关于我在做什么的一些说明:我有一个C++中的float var,我想传递给一个将float作为参数的Python函数。然而,Python中的变量输出语句正在输出乱码 - 我怀疑浮点数具有不同的精度?在C++中,小数点后有7位,在Python中是6.所以我想将float转换为C++中的字符串,将其传递给Python,截断小数点后第6位的数字,并将其转换回浮点数。 – jyoung

回答

2

首先初始化所有需要的变量。

Py_Initialize(); 
object main_module = import("__main__");//boost::python objects 
object dictionary = main_module.attr("__dict__"); 

运行代码来创建一个变量并设置一个初始值并在python中打印它。

boost::python::exec("resultStr = 'oldvalue'", dictionary); 
PyRun_SimpleString("print resultStr");//new value will reflect in python 

从C++读取相同的变量。

boost::python::object resultStr = dictionary["resultStr"];//read value from python to c++ 
std::string &processedScript = extract<std::string>(resultStr); 

以上字典对象是像共享地图。你可以从C++设置一个变量。 然后检查python的新值。

dictionary["resultStr"] = "new value";//set the variable value 
PyRun_SimpleString("print resultStr");//new value will reflect in python 

玩得开心编码。 谢谢。