• 文章
  • 如何在我的应用程序中使用命令行
发布
2013 年 7 月 10 日 (最后更新: 2013 年 8 月 25 日)

如何在我的应用程序中使用命令行?

评分: 3.0/5 (97 票)
*****

什么是命令行

有时,您的应用程序必须执行某些操作
例如,您希望仅通过一个命令来使用某个功能
或者通过一个命令和一些参数来调用一个函数
或者您想从用户那里获取输入,或者您想获取一个询问是否删除文件的选项
以及许多您可能需要的其他功能
您可以通过命令行来实现这些

命令行简介

命令行是一个窗口,用户在其中键入命令,计算机执行这些命令
所以,命令就是一条指令
命令是逐行执行的
当您键入一个命令并按 Enter 键时,它将被执行
例如,这是一个命令
 
yourapp -h

我们在这个命令中调用了 help
但是应用程序可能会使用另一个命令来获取帮助或执行其他操作

如何在程序中使用命令行

嗯,这非常简单!
您可以使用标准的 C 和 C++ 函数,如 printf、scanf 等来实现
这是一个示例,展示了如何添加一个选项来指定帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
void help();
int main(int argc, char** argv)
{
if(strcmp(argv[0], "-h"))
{
help();
}
}
void help()
{
cout<<"-h for help"<<endl;
}

让我们来翻译代码
首先,我们包含了头文件
之后,我们使用了 std 命名空间
我们创建了 help 函数来处理 -h
在 main 函数中,我们有两个参数
argc,类型为 int
argv 是一个指向 char 的指针数组
请注意,我们可以使用 char* argv[] 而不是 char** argv
在 if 表达式中,我们使用 strcmp,它接受 2 个参数
两者都是字符串
我们使用 argv[0] 来访问数组的第一个索引
其次,我们指定了用于帮助的选项
在 if 语句中,我们调用了 help 函数
最后,我们在 help 函数中写了帮助信息

如何从用户那里获取输入文件

这个示例展示了如何从用户那里获取文件并打开它
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
void help();
int main(int argc, char**argv)
{
string input;
if(strcmp(argv[0], "-h")
{
help();
}
else if(strcmp(argv[0], input))
{
file *f=fopen(input, "rb");
}
}
void help()
{
cout<<"usage: <filename>"<<endl;
}

我们创建了一个选项(文件输入),它接收用户的输入并打开它
在 main 函数中
我们创建了一个名为 input 的字符串
我们通过使用 "-h" 添加了帮助消息
然后在 if 语句中,我们将 input 作为第二个参数传递
然后,我们使用 fopen() 打开该文件

说明

您可以访问 argv 的其他索引
argc 是用户指定的选项的数量
所以,argv[argc-1] 是数组的最后一个索引
但是当 argc=1 时,argv[0] 指定了
这是因为用户指定了参数的数量
而 argv[0] 是第一个索引
最后,但同样重要地,您可以通过在 main 函数中添加另一个 if 语句来限制用户指定的参数数量,如下所示
1
2
3
4
if(argc==4)
{
help();
}

如您所见,参数限制为 4
但您可以将其限制为其他数字