根据用户输入打开文件

时间:2016-02-15 05:11:16

标签: c++ file-io command-line

我想提前输入文件名,当我的程序被调用时,我的程序没有让用户询问文件名。

我已经看过很多例子,程序会询问用户输入如下:

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一样。

我认为你们可能会得到我想要做的事情的要点。

2 个答案:

答案 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;
}

此处,argcargv称为命令行参数

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;
}