从c ++应用程序返回几个输出

时间:2017-08-08 06:40:29

标签: python c++

我正在编写一个c ++程序来评估3个值的结果。

我想通过python脚本调用此应用程序,它应该接收这些值。

问题是c ++ main函数,只返回一个整数值。

解决此问题的最佳方法是什么?

谢谢!

1 个答案:

答案 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的目录。