抛出问题:
先附上书本中的例题程序代码
#include <iostream>
int main(){
int ival;
while (std::cin >> ival, !std::cin.eof()){
if (std::cin.bad())
throw std::runtime_error("IO stream corrupted");
if (std::cin.fail()){
std::cerr << "bad data, try again" << std::endl;
std::cin.clear(std::istream::failbit);
continue;
}
}
return 0;
}
在输入正常时,没有什么问题。在输入字母时,就会一直打印“bad data, try again”这句话,效果如下所示:
解决问题方案:
我肯定不想让结果无限的打印,然后就开始查找原因,主要是因为没有清空输入流的缓存区的原因。所以我就对程序代码进行了一些修改,
#include <iostream>
#include <limits>
int main(){
int ival;
while (std::cin >> ival, !std::cin.eof()){