程式命令列argc\argv
阿新 • • 發佈:2019-01-09
在一些程式中會看到這樣的定義
int main(int argc, char **argv) 或
int main(int argc, char *argv [])
這樣的寫法在一些C\C++會經常看到,現在對這兩個引數做一個解釋。
在上述程式碼行中argc表示命令列輸入引數的個數(以空白符分隔),argv中儲存了所有命令列的引數。這裡的命令列不是指在IDE輸入什麼命令,而是在Windows的DOS和Linux中執行可執行檔案時輸入的指令。如下程式(Windows版本):
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
if (argc != 2)
{
cout << "輸入命令列的引數不正確!" << endl;
return -1;
}
Mat srcImage;
srcImage = imread(argv[1], CV_LOAD_IMAGE_ANYCOLOR);
if (!srcImage.data)
{
cout << "檔案為空!" << endl;
return -1;
}
namedWindow("argcargv", WINDOW_AUTOSIZE);
imshow("argcargv", srcImage);
waitKey(0);
return 0;
}
生成解決方案後,不執行,找到工程中的Debug資料夾下會看到有一個.exe執行檔案,如我的是argcDOS.exe。將影象檔案放入到Debug檔案中,開啟DOS視窗,進入到.exe資料夾中執行如下操作(以我的檔案為例):
結果如下:
在DOS視窗中輸入的命令列argcDOS.exe lena.bmp,argc代表是輸入命令列個數即在此例中為2,argv[]儲存命令內容,在此為argv[0]中儲存argcDOS.exe,argv[1]儲存lena.bmp。
PS:今天用Windows做的演示,是因為Linux崩潰了,重灌中,哭….
更新Linux環境執行方式,不再重複,見截圖