C++ 運用cin來控制while循環

C++中有時需要用循環輸入數字,而將非數字輸入設置爲一個錯誤條件,如:

while (cin >> x >> y)

我們知道,cin時istream類的一個對象,抽取運算符(>>)被設計成使得cin>>x也是一個istream對象,類運算符是使用函數實現的。使用cin>>x時,程序將調用一個函數,該函數返回一個istream值。將抽取運算符用於cin>>x對象,也將獲得一個istream對象。因此,整個while循環的測試表達式的最終結果爲cin,而cin被用於測試表達式中時,將根據是否成功,被轉換爲bool值true或false。例如,cin期望用戶輸入兩個數字,如果用戶輸入了q,cin>>將知道q不是數字,從而將q留在輸入隊列中,並返回一個被轉換爲false的值,導致循環結束。

        將這種讀取數字的方法與下面更爲簡單的方法進行比較:

for (int i = 0; i < limit; i++)
	{
		cout << "Enter value #" << (i + 1) << ": ";
		cin >> temp;
		if (temp < 0)
		{
			break;
		}
		ar[i] = temp;
	}

要提前結束該循環,可以輸入一個負值。浙江輸入限制爲非負值。這種限制符合某些程序的需要,但通常需要一種不會將某些豎直排除在外的、終止循環的方式。將cin>>用作測試條件嚇出了這種限制,因爲它接受任何有效的數字輸入。在需要使用循環來輸入數字時,如果在輸入循環後還需要進行輸入,則必須使用cin.clear()重置輸入,然後還可能需要通過讀取不合法的輸入來丟棄它們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章