我正在尝试学习如何在C ++中创建一个程序,当你运行它时,你可以告诉它运行并在一行中指定选项。例如,您可以在CMD中执行ipconfig /all
,并使用选项/all
运行ipconfig.exe。另一个示例是shutdown -f
,它告诉计算机使用选项-f
关闭。例如,我想创建一个程序,从URL下载一些东西并调用它,例如下载程序。从命令行可以输入downloader http://filehere.com /h
,它将使用/ h选项下载文件,我将在程序中定义其属性。我不想要如何制作下载器的代码或指南我只是想学习如何指定/ h这样的选项。有没有你知道的指南,可以发布或任何示例代码?我试过搜索指南,但我想我只是不知道这个操作实际上是什么叫。谢谢。
答案 0 :(得分:2)
您通常会定义main
函数以采用两个参数:int argc
和char *argv[]
,例如:
int
main(int argc, char *argv[])
{
...
第一个参数是程序接收的参数数量,argv
是指向它们的指针。注意,这不是强制性的,您可以将它们命名为任何您想要的,但这就是惯例。只需确保您的类型匹配。
您可以使用选项解析库,但这些库通常是特定于操作系统的。检查您是否收到/ h的一种简单方法是:
int got_h = 0;
for (int i=0; i<argc; ++i)
if (strcmp(argv[i], "/h") == 0)
got_h = 1;
...
if (got_h)
...
argv[argc]
始终为NULL
,以便更轻松地进行迭代。
此处提供更多信息:http://www.site.uottawa.ca/~lucia/courses/2131-05/labs/Lab3/CommandLineArguments.html
答案 1 :(得分:2)
main
函数有两个参数,传统上称为argc
和argv
:
int main (int argc, char * argv[])
{
// ...
}
argc
包含在命令行上传递的参数数量,argv
数组包含此类参数(argv[0]
是用于调用程序的名称); argv
数组的最后一个元素(即argv[argc]
)包含NULL
指针。
答案 2 :(得分:2)
根据您的熟练程度和使用指针的倾向,您可能更喜欢将命令行捕获为vector<string>
:
// UNTESTED CODE
int main(int argc, char **argv) {
std::vector<std::string> args(argv+1, argv+argc);
if(args.empty()) {
std::cout << "Usage: downloader URL [options]\n";
return 1;
}
if(std::find(args.begin(), args.end(), "/h") != args.end()) {
option_h = true;
}
Download(args[0]);
}