我想提前输入文件名,当我的程序被调用时,我的程序没有让用户询问文件名。
我已经看过很多例子,程序会询问用户输入如下:
int main()
{
cout << "Enter file name: ";
cin.get();
//run program
return 0;
}
但是,调用程序时,在命令行中显示输入的示例不多;
int main(int argv, char* argc[])
{
ifstream inputfile;
inputfile.open(argc);
//run program
return 0;
}
换句话说,用户可以在终端上输入类似的内容:
$。/ program example.txt
很抱歉,如果我的问题就像提交ELI5一样。
我认为你们可能会得到我想要做的事情的要点。
答案 0 :(得分:2)
使用:
int main(int argc, char* argv[])
{
ifstream inputfile;
if(argc == 2)
inputfile.open(argv[1]);
else
cout<<"Please nenter filename as command line argument!\n";
//run program
return 0;
}
此处,argc
和argv
称为命令行参数。
argc
的值等于命令行参数的数量,其中包括可执行文件本身的文件名。
argv
是作为命令行参数传递的字符串数组,其中可执行文件的名称位于argv[0]
,其余参数遵循该名称。
答案 1 :(得分:0)
您需要使用:
inputfile.open(argv[1]);
但是,我建议在程序中添加检查。
int main(int argc, char* argv[]){
if ( argc < 2 )
{
cerr << "Not enough arguments.\n";
return EXIT_FAILURE;
}
// There is an argument. Use it.
ifstream inputfile;
inputfile.open(argv[1]);
//run program
return 0;
}