C++ IO库的输入问题

 《C++ Primer练习8.1节》中关于IO库的操作

#include <iostream>
#include <stdexcept>
using namespace std;

istream &f(istream &in)
{
   int v;
   while (in>>v, !in.eof()){
      if (in.bad()){
         throw runtime_error("IO流错误");
      }
      if (in.fail()){
         cerr << "数据错误,请重试" << endl;
         in.clear();
         in.ignore(100, '\n');
         continue;
      }
      cout << v << endl;
   }
   in.clear();
   return in;
}

int main()
{
   cout << "请输入一些整数,按Ctrl+Z结束" << endl;
   f(cin);
   return 0;
}

输入7.6,结果会输出7和"数据错误"请重试。下面是VS Code调试结果

请输入一些整数,按Ctrl+Z结束
7.6
7
数据错误,请重试

如果输出"数据错误,请重试",不是应该执行后面的continue吗?为什么还会执行cout << v << endl

求大神解答!

走continue了啊 

你点断点看一下,输入7.6的时候,第一次循环压根没进两个if 怎么走continue;

in.clear();

后面加一条语句

cin.sync();   //清空流

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632