我目前正在尝试制作一个执行不同职责的小型应用程序。现在我有一个控制台应用程序弹出并询问我想做什么,但有时我宁愿用MyApp.exe -printdocuments或类似的东西启动它。
是否有任何教程可以向我展示一个简单的例子?
答案 0 :(得分:8)
在C ++中,您的main()
函数可以包含argc
和argv
个参数,这些参数包含在命令行上传递的参数。 argc
是参数计数(包括可执行文件名本身),argv
是指向以空字符结尾的长度为argc
的字符串的指针数组。
例如,该程序打印其参数:
#include <stdio.h>
int main(int argc, char *argv[])
{
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
任何C或C ++教程都可能有更多相关信息。
答案 1 :(得分:5)
您可以使用boost :: program_options执行此操作,如果您不想使用boost库,则必须自己解析主函数参数。
答案 2 :(得分:2)
getopt
是一个posix函数(存在windows的实现),可以帮助你解析你的参数:
#include <unistd.h> // getopt
// call with my_tool [-n] [-t <value>]
int main(int argc, char *argv[])
{
int opt;
int nsecs;
bool n_given = false, t_given = false;
// a colon says the preceding option takes an argument
while ((opt = ::getopt(argc, argv, "nt:")) != -1) {
switch (opt) {
case 'n':
n_given = true;
break;
case 't':
nsecs = boost::lexical_cast<int>(optarg);
t_given = true;
break;
default: /* '?' */
std::cerr << "Usage: "
<< argv[0] << " [-t <value>] [-n]\n";
return 1;
}
}
return 0;
}
答案 3 :(得分:1)
你最好使用一个库。这里有一些链接可能会让你开始使用c ++的命令行参数。
答案 4 :(得分:0)