#include<iostream>
#include<memory>
#include<vector>
#include<algorithm>
int main()
{
int i = 0;
while (std::cin>>i, !std::cin.eof()) //还没到文件结尾eof
{
if (std::cin.bad())//如果已经出错了,抛出异常,运行时错误
{
throw std::runtime_error("cin is corrupted");
}
if (std::cin.fail())//如果出现了错误
{
std::cin.clear();//先清空状态栏
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');//再忽略缓冲区
std::cout << "data format error, please try again" << std::endl;
continue;
}
std::cout << i << std::endl;
}
std::cout << "process complete" << std::endl;
return 0;
}
这段代码建议全文背诵,在使用io对象时都应该判断io对象的状态