_tmain(int argc, _TCHAR* ARGV[])下命令列引數用法
阿新 • • 發佈:2019-02-04
什麼是命令列引數:在命令列中給定的引數就是命令列引數。(即從輸入位置角度理解)
命令列引數的作用:讓我們可以在程式之外控制程式,例如linux或者dos中我們經常使用的命令,從本質上來說就是一個程式;而我們使用的引數,就是該命令(對應的程式)的命令列引數。
在C語言中帶引數的main()函式的命名形式int main(int argc, _TCHAR* argv[]){ return 0; }
第一個引數的值(習慣上寫為argc)表示程式執行時,命令列引數的個數
第二個引數的值(習慣上寫為*argv[])表示指向字串陣列的指標,每個字串對應一個引數
在c或c++中的示例:
int main(int argc, char* argv[]) { cout << "argc = " << argc << endl; for (int i = 0; i<argc; i++) cout <<"argv["<<i<<"] = "<< argv[i] << endl; return 0; }
argv[0]表示輸入程式的路徑及名稱
argv[1],argv[2]...表示自己輸入的引數
argc用來統計引數的個數,因為路徑為預設的引數,所以argc至少為1
_tmain(int argc, _TCHAR* argv[]) 示例:
int _tmain(int argc, _TCHAR* argv[])
{
cout << argc << endl;
for (int i = 0; i < argc; i++)
{
cout << argv[i] << endl;
}
return 0;
}
輸出的是一串數字而非我們想要的路徑,這是因為_TCHAR的宣告: typedef
wchar_t_TCHAR
在Unicode中_TCHAR被認為是寬字元,輸出寬字元時我們要使用wcout進行輸出,輸出結果為:
又遇到問題了,好像是無法輸出中文,如何輸出中文,點選開啟連結
只需要加一句話:wcout.imbue(std::locale("chs"));
程式碼示例:
int _tmain(int argc, _TCHAR* argv[]) { wcout.imbue(std::locale("chs"));// //設定語言區域為中國 wcout << argc << endl; for (int i = 0; i < argc; i++) { wcout << "argv[" << i << "]=" << argv[i] << endl; } return 0; }