在C++中创建一个从命令行获取参数的程序
Creating a program in C++ that takes arguements from the command line
我正在尝试学习如何制作一个程序,C++当你运行它时,你可以告诉它运行并在一行中指定选项。例如,您可以在CMD中执行ipconfig /all
,它运行ipconfig.exe选项为/all
。另一个例子是shutdown -f
,它告诉计算机使用选项 -f
关闭。例如,我想制作一个从URL下载某些内容并调用它的程序,例如下载器。从命令行键入downloader http://filehere.com /h
,它将使用/h 选项下载文件,我将在我的程序中定义其属性。我不想要有关如何制作下载器的代码或指南,我只是想学习如何指定/h 等选项。 是否有任何您知道并且可以发布的指南或任何示例代码?我尝试搜索指南,但我想我只是不知道此操作实际上叫什么。谢谢。
您通常将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
main
函数有两个参数,传统上命名为 argc
和 argv
:
int main (int argc, char * argv[])
{
// ...
}
argc
包含命令行上传递的参数数,argv
数组包含此类参数(argv[0]
是用于调用程序的名称);argv
数组的最后一个元素(即 argv[argc]
) 包含一个NULL
指针。
根据您对使用指针的熟练程度和倾向,您可能更喜欢将命令行捕获为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]);
}
- 数组长度,为什么从命令行获取时不能使用它?
- 通过命令行参数获取llvm ir文件时面临问题
- 从命令行获取参数时出现问题
- 从 C++ 中的二进制路径(命令行语句)获取进程 ID
- 在 main() 中获取不带参数的命令行参数
- 获取命令行请求的结果并打开文件
- 节点 js 我可以从用 C++ 编写的 windows 命令行应用程序中获取退出代码
- 如何使用数组获取命令行参数
- 如何在Visual Studio中获取要发送到cl.exe的命令行参数
- 通过命令行获取C++库的类名
- 是否有一个WinAPI可以从带有可选空格和其他参数的命令行获取文件名
- 从控制台应用中的命令行参数获取文件名C++
- 任务管理器如何获取进程的命令行可执行路径
- 从 Ubuntu 中的 Qt GUI 应用程序运行多个命令行应用程序并获取控制台输出
- 如何在C++中从命令行获取CGI表单数据
- getopt 命令行获取值 C++
- 如何获取窗口的命令行"打开方式.."功能?
- 尝试从命令行获取输入时出现char**argv[]segfault
- 从命令行获取运算符,并将其用作代码中的运算符
- 在C++中创建一个从命令行获取参数的程序