我直到這裏.argv [1]這是命令行的文件名...如何使用C++中的system()顯示文件的內容?
std::string first ("cat");
std::string second (argv[1]);
std::string command=firstlevel+secondlevel;
system(command);
我直到這裏.argv [1]這是命令行的文件名...如何使用C++中的system()顯示文件的內容?
std::string first ("cat");
std::string second (argv[1]);
std::string command=firstlevel+secondlevel;
system(command);
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());
的建議你把它差不多吧,不過要注意你的貓和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。
啊thx編輯,...太低咖啡水平:-) –
好,但要小心[代碼注入](https://en.wikipedia.org/wiki/Code_injection)。,應該在答案中提到。如果'argv [1]'是字符串'「foo; rm -rf $ HOME」'? –
@BasileStarynkevitch足夠的真實 –
所以,你正在努力獲取文件的內容?或顯示內容? – sami1592
我正在嘗試顯示文件的內容。對不起,忘了提。是的,我正在使用fork()。在父類中,我需要使用system()來顯示文件中的內容。 – tbone