[英]Passing C++ command line arguments inside main(), yet do the same job
Is there a way to keep the command line argument as standard and yet pass the argv
internally inside the main? 有没有办法将命令行参数保留为标准参数,但又在内部内部传递
argv
?
Like, change this: 就像,改变这个:
int main(int argc, char **argv) {
App app(argc,argv);
return app.exec();
}
to something like this: 像这样:
int main(int argc, char **argv) {
vector<string> argv ="arguments";
int argc = X;
App app(argc,argv);
return app.exec();
}
When I have: 当我有:
./a.out -a A -b B -c C
I know this is weird. 我知道这很奇怪。 I just want to find a workaround not to change the source code of a huge project and just run my command line arguments every time with only
./a.out
. 我只想找到一种解决方法,不要更改大型项目的源代码,而是每次仅使用
./a.out
运行命令行参数。
Put each of your arguments in a char array, and then put pointers to those arrays into an array of pointers. 将每个参数放在char数组中,然后将指向这些数组的指针放入指针数组。
char arg1[] = "./a.out";
...
char argN[] = "whatever";
char* argv[] = { arg1, ..., argN}
App app(N, argv);
You may be looking for 您可能正在寻找
const char *myArgv[]={"-a","A","-b","B"};
int myArgc=4;
App app(myArgc,myArgv);
return app.exec();
std::vector<std::string> args(argv, argv+argc);
You may rename arguments passed to app
as you wish to avoid a name conflict, for ex. 您可以重命名传递给
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.