在 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();
有没有办法将命令行参数保持为标准,同时在 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();