VS2013中帶命令行參數的調試方法---C++


今天先記錄一下(也是傳說中大神喜歡裝逼的comment line)c++中向主函數int main(int argc,char** argv )傳遞4中方法,歡迎添加新方法, 然后可以參考別人寫的很好的一篇博文: https://blog.csdn.net/qq76536257/article/details/50590272

 

1. 方法:以opencv 中的 cv::imread(argv[1], -1)為例。
           a.進入屬性properties--> 布局屬性Configuration properties--->調試debugging--->命令行參數 command Arguments---> 輸入自己的參數,這里以圖片RGB.bmp為例, 然后就會輸出結果。

           b.進入到對應的編譯的exe文件----->創建批處理文件(記事本改格式為(.bat) 就行)-----> 編輯batch文件: (可執行文件).exe RGB.bmp (即格式是: 對應exe+空格+參數+空格+參數+) -----> 退出, 點擊運行完成。

           c. 進入dos命令下---->進入對應的exe文件目錄(需要你有簡單的dos命令基礎,不行百度) -----> 編輯:對應exe+空格+RGB.bmp

          d. 再簡單點直接在c++中命令 argv[1] = "RGB.bmp",    哈哈哈!

2.參考別人的博文,很不錯詳細:

VS2013帶命令行參數的調試方法

在C++函數參數傳遞中,我們知道,main函數是演示C++程序如何向函數傳遞數組的好例子。一般來說,我們定義的的大多main函數都只有空的形參列表:

int  main ()  { … }1

然而,有時我們確實需要給main函數傳遞實參,一種常見的情況是用戶通過設置一組選項來確定函數所要執行的操作。例如:假定main函數位於可執行文件prog (通常是指編譯后產生的**.exe文件)之內,我們可以向程序傳遞下面的選項:

 

prog  -d  -o  ofile  data01

這些命令行選項通過兩個(可選的)形參傳遞給main函數:

 

int  main ( int argc, char *argv[ ] )  { … }1

第二個形參argv是一個數組,它的元素是指向C風格字符串的指針;第一個形參argc表示數組中字符串的數量。因為第二個形參是數組,所以main函數也可以定義成:

 

int  main ( int argc, char **argv)  { … }1

其中argv指向char * 。

當實參傳遞給main函數之后,argv的第一個元素指向程序的名字或者一個空字符串,接下來的元素依次傳遞命令行提供的實參。最后一個指針之后的元素值保證為0。

以上面提供的命令行為例,argc應該等於5,argv應該包含如下的C風格字符串:

argv [0] = “prog” ; argv [1] = “-d” ; argv [2] = “-o” ; argv [3] = “ofile” ; argv [4] = “data0” ;12345

注意: 當使用argv中的實參時,一定要注意可選的實參從argv[1]開始;argv[0]保存程序的名字,而非用戶輸入。

那么,當程序編譯完成之后,怎樣調試運行指定的參數呢?

如下,在VS2013中有兩種方法:

(1) 無需調試的情況:直接在系統中用DOS命令進入到*.exe所在的目錄下 然后輸入:

**.exe pra1 pra21

注意這種情況下,如果參數中有一個是待讀取文件的filename,例如:123.txt,那么要默認把這個文件放在**.exe所在在目錄下。這與第二種情況不同。

(2) 需要調試的情況:

點擊菜單欄的 項目>>屬性:

 

出現屬性對話框之后,選擇 配置屬性>>調試>>命令參數:

 

在里面設置main的參數即可,多個參數用空格隔開。

在第二種情況下,如果參數中有一個是待讀取文件的filename,例如:123.txt,那么要默認把這個文件放在項目所在的文件夾中。可以通過右鍵項目名稱>>在文件資源管理中打開文件夾,放在打開后的目錄下即可。具體如下圖:

 

然后,運行即可。 --------------------- 作者:Porsche_911T 來源:CSDN 原文:https://blog.csdn.net/qq76536257/article/details/50590272 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

 

 

 

 

       

          

 

 

          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM