这是我上一个问题的延续, In C++, how to read the contents of a text file, and put it in another text file?
在那里,我能够打开输入文件input.txt
并成功读取内容,
但现在我不想事先硬编码或提供输入文件名,
ifstream myfile ("input.txt");
if (myfile.is_open())
但我希望稍后在编译程序并在命令行中生成名为test
的可执行文件后给出输入文件名,如下所示
./test input.txt
有关如何执行此操作的任何建议吗?
答案 0 :(得分:3)
您可以在main
函数中访问传递给您的程序的命令行参数:
int main(int argc, char *argv[]) { }
argc
是传递给程序的参数数量,argv
包含指向传递给程序的参数的C字符串的指针。因此,使用此数组可以访问传递给程序的参数。
但你必须注意:程序本身总是作为第一个参数传递给程序。所以argc总是至少有一个,argv[0]
包含程序名。
如果您想从帖子中访问input.txt
,可以写下:
int main(int argc, char *argv[]) {
if (argc > 1) {
// This will print the first argument passed to your program
std::cout << argv[1] << std::endl;
}
}
答案 1 :(得分:3)
只需添加所有答案 - 您可以使用C
$ ./a.out < input.file // input file
$ ./a.out > output.file // output file
$ ./a.out < input.file > output.file // merging above two commands.
了解更多信息:REFER THIS
当然,干净的方式是使用 argc / argv 作为其他绅士的回答。
答案 2 :(得分:0)
这是argv
和argc
的用途。
int main(int argc, char **argv)
{
assert(argc >= 2); // Not the best way to check for usage errors!
ifstream myfile(argv[1]);
…
}
答案 3 :(得分:0)
main的argc和argv参数将包含程序的所有输入参数,argc / argv的google,或者查看answers here