bool correct = false;
while (!correct)
{
cout << "Please enter an angle value => ";
cin >> value; //request user to input a value
if(cin.fail())
{
cin.clear();
while(cin.get() != '\n');
correct = false;
}
else
cin.get();
cin.ignore();
correct = true;
}
下面就根據上面的代碼我的問題:程序不執行循環
後,我輸入一個值,該程序將暫停,我必須再次按Enter鍵繼續下一部分的程序;我怎樣才能避免它?
此外,如果我輸入像'abcd'這樣的值,程序將不會循環以請求用戶再次輸入值,爲什麼會這樣呢? 相反,它仍然將繼續,並且輸出0
值我還是新來這幾樣的命令,只是在玩和探索它們,我很欣賞你的指導!
編輯:
while (!correct)
{
cout << "Please enter an angle value => ";
cin >> value; //request user to input a value
if(cin.fail())
{
cin.clear();
while(cin.get() != '\n');
correct = false;
}
else
{
cin.get();
cin.ignore();
correct = true;
}
}
使用調試器... –
使用括號,而不管該範圍內有多少行。這會使閱讀更容易。 –
由於代碼無條件地將'correct'設置爲'true'(一旦縮進以反映實際結構),您的循環就會停止。你是否忘記了'else'子句中的'{...}'?我擔心一旦你得到EOF會發生什麼(例如,用戶從'/ dev/null'重定向標準輸入)。我想你最終會陷入無限循環。 –