2015-12-22 51 views
1

我想從我的代碼運行一個shell命令。但是,不會生成輸出文件(ts.dat)。 有人可以讓我知道如何解決這個問題嗎?C++:沒有生成系統命令的輸出文件

string cmd1, input; 
cout << "Enter the input file name: "; 
cin >> input; 

cmd1 = "grep 'DYNA>' input | cut -c9-14 > ts.dat"; 
system((cmd1).c_str()); 

回答

1
cmd1="grep 'DYNA>' "+input+" | cut -c9-14 > ts.dat"; 

配售input引號內將讓編譯器解析它作爲一個字符串,而不是一個變量。

1

編輯這一行:

cmd1="grep 'DYNA>' input | cut -c9-14 > ts.dat"; 

要這樣:

cmd1="grep 'DYNA>' " + input + " | cut -c9-14 > ts.dat"; 

你需要真正從input字符串中使用的值。當前你有你的代碼的方式,你只是在你的字符串中寫入input這個詞,而不是使用存儲在字符串中的值。

+0

非常感謝。現在我可以看到我的命令行是通過獲取當前輸入文件來執行的。但是輸出ts.dat仍然沒有生成。我在終端中使用了相同的命令來生成輸出並且工作。但通過系統(CMD),它不起作用。 :( – vidhya

+0

我試圖從一個單一的系統(CMD)語句執行多個命令,並可能導致這個輸出沒有生成的問題 – vidhya

+0

@vidhya - 確保你正在尋找ts.dat的正確位置。它應該在你的程序的工作目錄中。 – pstrjds