1. 程式人生 > >程式命令列argc\argv

程式命令列argc\argv

在一些程式中會看到這樣的定義

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環境執行方式,不再重複,見截圖
這裡寫圖片描述