《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