在 main() 中传递 C++ 命令行参数,但做同样的工作

Passing C++ command line arguments inside main(), yet do the same job

有没有办法将命令行参数保持为标准,同时在 main 内部传递 argv

喜欢,改变这个:

int main(int argc, char **argv) {
    App app(argc,argv);
    return app.exec();
}

像这样:

int main(int argc, char **argv) {
    vector<string> argv ="arguments";
    int argc = X;
    App app(argc,argv);
    return app.exec();
}

当我有:

./a.out -a A -b B -c C

我知道这很奇怪。我只是想找到一种解决方法,不更改大型项目的源代码,每次只 运行 我的命令行参数只有 ./a.out.

std::vector<std::string> args(argv, argv+argc);

将您的每个参数放入一个字符数组中,然后将指向这些数组的指针放入一个指针数组中。

char arg1[] = "./a.out";
... 
char argN[] = "whatever";
char* argv[] = { arg1, ..., argN}

App app(N, argv);

您可以重命名传递给 app 的参数,因为您希望避免名称冲突,例如

int main(int argc, char **argv) {
    vector<string> app_argv = /* contents */;
    int app_argc = app_argv.size() ;
    App app(app_argc, app_argv);
    return app.exec();
}

您可能正在寻找

const char *myArgv[]={"-a","A","-b","B"};
int myArgc=4;
App app(myArgc,myArgv);
return app.exec();