2011-08-16 3 views
0

어떻게 C++에서 파이썬 함수로 문자열을 전달할 수 있습니까? 내 C++ 응용 프로그램에서 문자열을 가져 와서 Python에서 구문 분석하고 싶습니다.C++ 문자열을 파이썬에 전달

+1

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

+0

을 확인하거나 C API 섹션의 문서를 읽으십시오. –

+0

내가 뭘하려고하는지에 대한 약간의 설명 : float var를 C++에두고 float를 매개 변수로 사용하는 Python 함수에 전달하고 싶습니다. 그러나 변수에 대한 Python의 print 문은 횡설수설 한 결과를 출력합니다. 부동 소수점은 다른 정밀도를가집니다. C++에서 소수점 이하 7 비트는 파이썬에서 6입니다. 그래서 float를 C++의 문자열로 변환하고, 파이썬으로 전달하고, 6 번째 소수점 이하의 숫자를 자르고, 다시 float로 변환하고 싶습니다. . – jyoung

답변

2

필요한 모든 변수를 먼저 초기화하십시오.

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

변수를 만들고 초기 값을 설정하고 파이썬으로 인쇄하는 코드를 실행하십시오.

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 

재미있는 코딩을 즐기십시오. 감사합니다. .