我知道,當我寫:命令行輸入C++
int main (int argc, char *argv[])
{
return 0;
}
我能得到的命令行輸入,如文件,從中讀取輸入。但是,編譯後輸入文件時應該怎麼做。我的意思是假定輸入文件inputFile.txt和我的代碼的名稱存儲在main.cpp中。我會做以下。
g++ main.cpp -o main
./main inputFile.txt
爲了能夠得到inputFile.txt,我該怎麼辦?
我知道,當我寫:命令行輸入C++
int main (int argc, char *argv[])
{
return 0;
}
我能得到的命令行輸入,如文件,從中讀取輸入。但是,編譯後輸入文件時應該怎麼做。我的意思是假定輸入文件inputFile.txt和我的代碼的名稱存儲在main.cpp中。我會做以下。
g++ main.cpp -o main
./main inputFile.txt
爲了能夠得到inputFile.txt,我該怎麼辦?
argc
存儲參數的數量。 argv
是一個參數數組。
argv[0]
將是程序名稱(如果可用)。請參閱:Is "argv[0] = name-of-executable" an accepted standard or just a common convention?
如果您只傳遞一個參數,則可以使用argv[1]
(它是您的輸入文件名)來執行您所需的任何操作。
有關更多信息,請參閱What does int argc, char *argv[] mean?。
嘗試記住當argv [0]是第一個實際參數,當argv [1]是... – 2013-11-26 18:31:08
'argv [0]'是程序名稱。 'argv [1]'是第一個參數。 –
@MikeSeymour除非不是:-)其中,可能是另一種語言的方式......我的時間大概是兩倍...... – 2013-11-26 18:33:15
你有兩種選擇。
在輸入的情況下,字符串「inputFile.txt」將在argv [1]中(arv [0]是您的實際命令)。然後您可以使用您的操作系統從該文件讀取。
可能更簡單的是使用重定向;即將您的命令行更改爲「./main < inputFile.txt」然後,該文件的內容將位於輸入流中。
第一種方法(或編寫程序以支持這兩種方法)對於商業應用將是首選,但第二種方法將用於學習目的。
在僞:從ARGS
foreach(argv) {
if(argv exists)
open filehandle;
do stuff
} else {
printf "Your file does not seem to exist";
}
獲取文件名,檢查文件是否存在,打開文件,獲取內容,利潤 – afuzzyllama
@afuzzyllama主(INT ARGC,CHAR *的argv [])足以在這種情況下獲取輸入文件? – caesar
這可能有助於:http://stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean – afuzzyllama