• 文章
  • 如何在我的應用程式中使用命令列
釋出
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
但您可以將其限制為其他數字