2011-08-01 216 views
0

我試圖調用另一個程序在我的文件中執行一個函數(我不知道是什麼,只是它不是用C++編寫的,而是在shell中) C++程序。我不知道如何在我的程序中實際執行該功能。我知道我寫這樣的東西如何從C++程序運行另一個程序

system(PROGRAM HERE); 

問題是,我不知道我應該如何輸入程序。我相信,如果功能被稱爲dostuff,我會輸出

system("dostuff"); 

......我想。但是,如果在我的C++程序中將該變量作爲變量賦予該函數的參數,那該怎麼辦呢?這是我真正需要幫助的。在終端,我會輸入「dostuff -1 arg"所以在C++我會打字了

int arg = 5; 

system("dostuff" arg); 
+1

KED,歡迎SO。很難理解這裏提出的問題。請提供更多信息。 – 2011-08-01 23:44:57

回答

5

你可以先格式化字符串包括<sstream>:。

int arg = 5; 
std::stringstream ss; 
ss << "dostuff " << arg; 
system(ss.str().c_str()); 

或者,您可以使用連接的std::string功能。如果你喜歡C風格的格式化,您可以使用snprintf到類似的效果。

+3

+1:用於推薦'snprintf'而不是'sprintf'。 –

+0

@Nicol Bolas是個很酷的暱稱:)... –

+0

謝謝!有效!這樣做,我沒有工作,所以...你救了我:) – ked

0

簡單的答案是

system("dostuff -1 5"); 

本質上,您需要構建終端參數並將其傳遞給系統調用。

例:

int arg = 5; 
std::stringstream command; 

command << "dostuff -1 " << arg; 

system(command.str());