从命令行

时间:2016-11-23 09:54:07

标签: c++ command-line-arguments

我是c ++的新手,在项目中我需要使用命令行参数。 我读到了命令行参数,包括

 int main(int argc, char** argv)
{
}

但是我在源文件中声明我的文件名时遇到了问题。

我在源文件(file_process.cpp)中将我的输入和输出文件名声明为

const char iFilename[] ;
const char oFilename[] ;

定义了函数(使用输入文件--iFilename并处理oFilename中的输出)

void file_process::process(iFilename[], oFilename[])
{
body...
}

并在主方法中:

int main(int argc, char** argv) {

    iFilename[] = argv[1];
    oFilename[] = argv[2];
    file_process::process(iFilename[], oFilename[]);

}

之前我硬编码文件名以在main方法中没有参数的情况下测试我的程序,并将源文件(file_process.cpp)中的变量声明为:

const char iFilename[] = "input_file.pdf";
const char oFilename[]  = "output_file.txt";

并且它正常工作,但是当我尝试从命令行获取参数时,如上所述,我无法编译它。

在c ++中这样做是否正确?我使用c#,只是在源文件中声明如下:

string iFilename = args[0];
string oFilename = args[1];

的工作原理。 我

1 个答案:

答案 0 :(得分:1)

这是一种方法:

int main(int argc, char** argv)
{
    assert(argc >= 3);
    const std::string iFilename = argv[1];
    const std::string oFilename = argv[2];
    file_process::process(iFilename, oFilename);
}

file_process::process可能是:

void file_process::process(const std::string& iFilename, const std::string& oFilename)
{
    body...
}