如何解决cin.fail运行迭代是否太晚?
我正在做一个相对简单的任务,要求我们输入整数,并且如果它遇到非整数的问题(用C ++编写),则会优雅地失败。我对这种语言有相当的经验,我知道它具有检查ios :: failbit中的读取错误的功能。结果,我在这里使用cin.fail()检查错误,但是它运行一个循环太晚了-也就是说,它首先运行其余代码,直到下一次它才意识到错误发生检查缓冲区。显而易见的解决方案是只检查两次,但这只会导致无限循环(即使我冲洗或清除cin也是如此)。有什么办法可以立即进行更多检查?
这是我的代码:
int min = 101; //One higher than the max.
int pile = 0;
int count = 0;
int temp = 0;
int fail;
std::cout << "Input a series of integers between 0 and 100. When you wish to"
" exit,enter -1.\n";
while (true){
std::cin >> temp;
if (std::cin.fail()){
std::cout << "FAILURE: Bad input. It probably wasn't an integer.\n";
std::cout << "Reading will stop.\n";
break;
}
std::cout << "\nTemp is " << temp << "\n";
if (temp > 100 || temp == -1){
break;
}
if (temp < min){
min = temp;
}
pile += temp;
std::cout << "Pile is " << pile << "\n";
count++;
std::cout << "Count " << count << "\n";
}
std::cout << "Your average was: " << (double)pile/count << ".\n";
std::cout << "Your minimum was: " << min << ".\n";
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。