2013-11-26 158 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"; 
}