职位关键字 工作地点
工作名称 公司名称 校园招聘
中国最好的工作搜索引擎!
  回复留言  
  C++高手帮忙看看啊
作者: tenglvjun  01-01 08:00   回复  
 #include<iostream>

using namespace std;

int main()

{

int i;

while(cin>>i,!cin.eof())

{

if(cin.bad())

throw runtime_error("IO stream corrupted");

if(cin.fail())

{

cerr<<"bad data,try aganin";

cin.clear(istream::failbit);

continue;

}

}

return 0;

}

这是个流输入流的问题,为什么我输入一串字符的时候,会发生无限循环的啊?请高手帮忙啊

  回复:C++高手帮忙看看啊
作者: colagump  01-01 08:00   回复  
 老大你的rumtime_error哪来的, 编译器咋就会让你通过捏?



还有你看的什么书啊, cin.clear有2个重载:

cin.clear()是清除所有flag;

cin.clear(state)是清除所有flag并设置state这个flag;

谁告诉你cin.clear(state)是把state这个flag清除掉?



另外你还要加一句cin.ignore, 否则错误的内容还在缓冲里, 下次再读还是会造成无限循环.



另外那个continue貌似没什么用吧, 留在那戳眼睛...





#include <iostream>

#include <stdexcept>

using namespace std;



int main()

{

int i;

while(cin>>i,!cin.eof())

{

if(cin.bad())

throw runtime_error("IO stream corrupted\n");

if(cin.fail())

{

cerr<<"bad data, try aganin\n";

cin.clear();

cin.ignore(1024, '\n');

}

}

return 0;

}

  回复:C++高手帮忙看看啊
作者: lucasf  05-28 20:27   回复  
  while(!cin.eof(), cin>>i)

写反了。

  回复:C++高手帮忙看看啊
作者: 朋友不好  05-28 20:27   回复  
  问下你这有先后顺序吗?

  回复:C++高手帮忙看看啊
作者: 可爱的小知道  05-28 20:27   回复  
  while( )

{





}



这里边有一句使它陷入死循环。.^_^.

标 题:
内 容:
用户名:
 游客
 
 
Copyright©2005-2007, 版权所有 WWW.JOBMET.COM
ICP证:京ICP备06019556号