我正在编写一个c ++程序来评估3个值的结果。
我想通过python脚本调用此应用程序,它应该接收这些值。
问题是c ++ main函数,只返回一个整数值。
解决此问题的最佳方法是什么?
谢谢!
答案 0 :(得分:2)
您可以将中间值保存在文件中,也可以在c ++代码中写入stdout
,例如。
#include <iostream>
int main()
{
std::cout << "param1,param2,param3\n";
}
现在在python中使用subprocess.Popen
执行c ++代码并使用stdout
捕获PIPE
。
from subprocess import Popen, PIPE
process = Popen('./nameofyourexe', stdout=PIPE, stderr=PIPE)
output, err = process.communicate()
if process.returncode == 0:
print(output.decode().strip().split(','))
else:
print('error: %s' % err.decode())
由您决定输出三个参数的格式。我将它们全部放在同一行,用逗号分隔,在python代码中只是split
。您可以根据自己的需要选择不同的方式。
编译c ++并从同一目录运行python之后。输出是
['param1', 'param2', 'param3']
注意:
我使用'./nameofyourexe'
(前缀为./
)从当前目录执行程序。这可能不适用于Windows(我在linux上)或者你从不同的目录执行它。要解决此问题,您可以将cwd
参数传递给Popen
,指定包含exe的目录。