【发布时间】:2015-10-22 15:12:56
【问题描述】:
我正在编写一个程序,在该程序中,我使用cin>>iUserSel; 从用户那里获得一个整数输入。如果用户输入一个字母,程序将进入无限循环。我试图用下面的代码来防止这种情况发生,但程序进入了一个无限循环并打印出“错误!输入 #!”。如何修复我的程序?
cin>>iUserSel;
while (iValid == 1)
{
if (cin.fail())
{
cin.ignore();
cout<<"Wrong! Enter a #!"<<endl;
cin>>iUserSel;
}//closes if
else
iValid = 0;
}//closes while
我在Correct way to use cin.fail() 和C++ cin.fail() question 找到了一些相关信息 ,但我不明白如何使用它们来解决我的问题。
【问题讨论】:
-
不要使用
cin.fail()和iValid标志来测试代码中的相同状态。它属于编码中“不要重复自己”的格言。在这里,它会导致您对代码的状态管理不善,因为您在代码的不同点检查“相同”状态的两个版本,您会感到困惑。