2013-11-26 155 views
0

我知道,當我寫:命令行輸入C++

int main (int argc, char *argv[]) 
{ 

    return 0; 
} 

我能得到的命令行輸入,如文件,從中讀取輸入。但是,編譯後輸入文件時應該怎麼做。我的意思是假定輸入文件inputFile.txt和我的代碼的名稱存儲在main.cpp中。我會做以下。

g++ main.cpp -o main 
./main inputFile.txt 

爲了能夠得到inputFile.txt,我該怎麼辦?

+0

獲取文件名,檢查文件是否存在,打開文件,獲取內容,利潤 – afuzzyllama

+0

@afuzzyllama主(INT ARGC,CHAR *的argv [])足以在這種情況下獲取輸入文件? – caesar

+1

這可能有助於:http://stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean – afuzzyllama

回答

4

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?

+1

嘗試記住當argv [0]是第一個實際參數,當argv [1]是... – 2013-11-26 18:31:08

+2

'argv [0]'是程序名稱。 'argv [1]'是第一個參數。 –

+0

@MikeSeymour除非不是:-)其中,可能是另一種語言的方式......我的時間大概是兩倍...... – 2013-11-26 18:33:15

0

你有兩種選擇。

在輸入的情況下,字符串「inputFile.txt」將在argv [1]中(arv [0]是您的實際命令)。然後您可以使用您的操作系統從該文件讀取。

可能更簡單的是使用重定向;即將您的命令行更改爲「./main < inputFile.txt」然後,該文件的內容將位於輸入流中。

第一種方法(或編寫程序以支持這兩種方法)對於商業應用將是首選,但第二種方法將用於學習目的。

在僞
0

:從ARGS

foreach(argv) { 
    if(argv exists) 
    open filehandle; 
    do stuff 
} else { 
    printf "Your file does not seem to exist"; 
}