我正在尝试编写一段代码,它可以连续地从输入(cin
)中读取数据,它应该忽略可能出现的错误并继续阅读下一个输入。
目前,我知道可能会发生两种错误:EOF(Ctrl + D),或输入字符而不是数字。
下面是代码的简化摘录,但当我按Ctrl + D时,它不起作用。
int ival;
int i = 0;
while(true)
{
cout << i++ << ": ";
cin >> ival;
if (!cin.good())
{
cin.clear();
if (cin.eof()) clearerr(stdin);
cin.ignore(10000,'\n');
}
else
cout << ival << endl;
}
我已经检查了下面的帖子和其他一些类似的帖子。但是,每个帖子一次只处理其中一个错误。
一个一个的。
我还尝试了错误处理部分中语句的各种排列,但仍然不成功。
1条答案
按热度按时间rt4zxlrg1#
这是一段处理EOF(Ctrl+D)和错误输入的代码。它继续阅读输入并忽略无效的输入。