2016-02-05 141 views
0

我直到這裏.argv [1]這是命令行的文件名...如何使用C++中的system()顯示文件的內容?

std::string first ("cat"); 
std::string second (argv[1]); 
std::string command=firstlevel+secondlevel; 
system(command); 
+0

所以,你正在努力獲取文件的內容?或顯示內容? – sami1592

+0

我正在嘗試顯示文件的內容。對不起,忘了提。是的,我正在使用fork()。在父類中,我需要使用system()來顯示文件中的內容。 – tbone

回答

1

man 3 system給出以下簡介

#include <stdlib.h> 
int system(const char *command); 

所以,我們需要給argument系統爲char or const char

所以,你需要使用c_str()std::string得到char

command.c_str() 

那麼,您的最終代碼看起來像,通過@Andersķ

std::string firstlevel ("cat"); 
std::string secondlevel (argv[1]); 
std::string command=firstlevel + " " + secondlevel; 
system(command.c_str()); 
2

的建議你把它差不多吧,不過要注意你的貓和argv [1]和系統之間沒有空格需要const char*作爲參數,而不是一個std::string

std::string firstlevel ("cat"); 
std::string secondlevel (argv[1]); 
std::string command=firstlevel+" "+secondlevel; // add space between 
system(command.c_str()); // pass const char* 

然而,提防code injections

+0

啊thx編輯,...太低咖啡水平:-) –

+0

好,但要小心[代碼注入](https://en.wikipedia.org/wiki/Code_injection)。,應該在答案中提到。如果'argv [1]'是字符串'「foo; rm -rf $ HOME」'? –

+0

@BasileStarynkevitch足夠的真實 –

相關問題