我知道,当我写:命令行输入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