我目前正在尝试制作一个执行不同职责的小型应用程序。现在我有一个控制台应用程序弹出并询问我想做什么,但有时我宁愿用 MyApp.exe -printdocuments 之类的东西启动它。
是否有任何教程可以向我展示一个简单的示例?
我目前正在尝试制作一个执行不同职责的小型应用程序。现在我有一个控制台应用程序弹出并询问我想做什么,但有时我宁愿用 MyApp.exe -printdocuments 之类的东西启动它。
是否有任何教程可以向我展示一个简单的示例?
在 C++ 中,您的main()
函数可以有argc
和argv
参数,其中包含在命令行上传递的参数。argc
是参数的计数(包括可执行文件名称本身),并且是argv
指向长度为 null 的字符串的指针数组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++ 教程都可能有更多关于此的信息。
您可以使用 boost::program_options 来执行此操作,如果您不想使用 boost 库,则必须自己解析主函数参数。
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;
}
你最好为此使用一个库。这里有一些链接可以帮助您开始使用 c++ 进行命令行参数。