1. 程式人生 > >_tmain(int argc, _TCHAR* ARGV[])下命令列引數用法

_tmain(int argc, _TCHAR* ARGV[])下命令列引數用法

什麼是命令列引數:在命令列中給定的引數就是命令列引數。(即從輸入位置角度理解)

命令列引數的作用讓我們可以在程式之外控制程式,例如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;
}