C++讀取命令提示字元的參數
在C/C++中讀取Command line參數是利用Main函數的兩個參數來處理,
#include <iostream>
這兩個參數的順序與寫法是固定的,
第一個參數int型態給你的是總共有輸入幾個參數,
第二個參數char**型態給你的是參數的"字串",要注意這是C-style的字串。
NOTE: 會需要寫這個小程式的目的就是,要澄清到底是程式得到的寫錯,還是其他的問題。
下面一個可以顯示所有輸入參數的程式
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv)
{
for (int i=0 ; i<argc ; ++i)
cout << "[" << i << "]" << argv[i] << endl;
return 0;
}
實際測試這隻程式的時候會發現
在Command line 輸入
ListCommandLineArgs.exe foo 1234
會輸出
[0]ListCommandLineArgs.exe
[1]foo
[2]1234
程式讀取到的[0]號參數,往往都是你的程式名稱or程式路徑,
而[1]號參數之後就是我們剛剛在Command line中所輸入的。
所以實際上我們會得到的參數數目總是會多1,也就是我在Command line輸入3個參數,程式會獲得argc=4。
上面提過,因為[*]號參數都是C-style字串資料,所以我們如果要整數or浮點數資料,就需要經過轉換
C函數庫中的 atoi 和 atof 函數就可以幫忙轉換成 int 和 double
arg_i = atoi(argv[1]);
cout << "Second arg=" << arg_i << endl;
printf("Second arg=%d\n", arg_i);
arg_d = atof(argv[2]);
cout << "Third arg=" << arg_d << endl;
printf("Third arg=%lf\n", arg_d);
留言