输入流状态查询

sunnystorm 2007-10-24 03:55:26
Primer 四版248页
#include <iostream>
using namespace std;
int main()
{
int val;
while (cin>>val,!cin.eof())
{if (cin.bad())
throw runtime_error("输入流发生错误");
if(cin.fail())
{cerr<<"错误数据"<<endl;
cin.clear(iostream::failbit);
continue;
}
cout<<val<<endl;
}
return 0;

}
检查输入流是不是发生错误

当输入字母时
会一直有 ”错误数据“
怎么会这样?
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnystorm 2007-10-24
  • 打赏
  • 举报
回复
这个是Primer C++第四版上的例题
还没看其它书上是怎么说的
但是这个程序运行起来怎么会出现死循环呢?
panlong1987 2007-10-24
  • 打赏
  • 举报
回复
流的标志检验,对于这种类型不配(需要int,输入char)会不会导制failbit标志呢,你可以好好看下书复习一下!
sunnystorm 2007-10-24
  • 打赏
  • 举报
回复
这个就是检查给的类型是否一致
并且给出提示的
首先检查输入流是否发生错误
然后检查输入的类型是否匹配
编译时没出现错误
但是输入是字母时
一直是 错误数据 死循环
加一个break;
就行了
但是程序就不能继续了
应该在continue;
之后就会要求再输入数据的
但是为什么循环不停止呢?
xugang_2001 2007-10-24
  • 打赏
  • 举报
回复
因为它要求是输入一个int值,你却给定字母,当然有问题了.类型不一致

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧