[英]returning several outputs from c++ application
我正在編寫一個c ++程序,它評估3個值的結果。
我想通過python腳本調用此應用程序,該腳本應接收這些值。
問題是c ++主函數僅返回一個整數值。
解決此問題的最佳方法是什么?
謝謝!
您可以將中間值保存在文件中,也可以在c ++代碼中寫入stdout
,例如
#include <iostream>
int main()
{
std::cout << "param1,param2,param3\n";
}
現在在python中使用subprocess.Popen
執行c ++代碼並使用PIPE
捕獲stdout
。
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文件的目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.