2011-08-16 171 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 

玩得開心編碼。 謝謝。