死循环了!!!!遇不到文件结束符。8.4题

_highlight 2010-03-10 04:36:58


//get.h
#include<iostream>
std::istream &get(std::istream &in)
{
int ival;
while(in>>ival,!in.eof())
{ //遇到文件结束符之前一直读入数据
if(in.bad()) //出现系统级故障
throw std::runtime_error("IO stream corrupted");
if(in.fail()) //出现可恢复错误
{
std::cerr<<"bad data,try again"; //提示用户
in.clear(); //恢复流
in.ignore(200,' '); //跳过类型非法的输入项
continue; //继续读入数据
}
//读入正常
std::cout<<ival<<" ";
}
in.clear();
return in;
}

//8-4.cpp
//主函数以cin为实参调用get函数
#include"get.h"
#include<iostream>
using namespace std;

int main()
{
double dval;
get(cin);
cin>>dval; //重新使用恢复后的流
cout<<dval<<endl;
return 0;
}

前面遇到文件结束符之前一直读入数据,结果一直遇不到文件结束符,始终让循环输入数字。

...全文
130 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
_highlight 2010-03-10
  • 打赏
  • 举报
回复
试了N次,应该是先Ctrl+z,再回车,再Ctrl+z,再输入。才OK。
但是为啥?
logiciel 2010-03-10
  • 打赏
  • 举报
回复
先回车,然后"Ctrl+z",再回车.
logiciel 2010-03-10
  • 打赏
  • 举报
回复
先回车,然后"Ctrl+z".
_highlight 2010-03-10
  • 打赏
  • 举报
回复
编译器的问题?


晕死了
SuperLy 2010-03-10
  • 打赏
  • 举报
回复
怀疑"Ctrl+z"被处理成了:"Ctrl","z"两次输入,
没有成为"Ctrl+z"...
_highlight 2010-03-10
  • 打赏
  • 举报
回复
一次不行,要Ctrl + Z好几次,还不一定管用
yuzl32 2010-03-10
  • 打赏
  • 举报
回复
引用 4 楼 rgl8351413 的回复:
不行,Ctrl + Z,出错。


同时按键Ctrl + Z ,然后回车.
_highlight 2010-03-10
  • 打赏
  • 举报
回复
不行,Ctrl + Z,出错。
yuzl32 2010-03-10
  • 打赏
  • 举报
回复
输入:Ctrl + Z
SuperLy 2010-03-10
  • 打赏
  • 举报
回复
试试Ctrl+z 看看能不能结束...
yuzl32 2010-03-10
  • 打赏
  • 举报
回复
输入:Ctrl + Z

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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