我正在處理以下代碼。輸入流失敗後對輸入變量的影響
#include <iostream>
int main()
{
std::cout << "Enter numbers separated by whitespace (use -1 to quit): ";
int i = 0;
while (i != -1) {
std::cin >> i;
std::cout << "You entered " << i << '\n';
}
}
我知道使用while (std::cin >> i)
會更好,但我不明白具體發生。 如果我提供了一個無效的輸入,則循環變得無限,因爲輸入流進入失敗位狀態。我的問題是輸入變量i
發生了什麼?在我的情況下,無論先前輸入的值如何,它都變爲0。爲什麼在輸入無效後變爲0?這是預定義的行爲嗎?
如果輸入失敗,輸入變量(即流的參數保持不變)。 –
@Koushik他們是?在我的情況下,它們變爲0。這就是我的問題。它爲什麼會改變,爲什麼是0? – chosentorture
它不適合我,它總是顯示我輸入的最後一個數字。經MSVC2012測試。 – Borgleader