| |
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( )
{
}
这里边有一句使它陷入死循环。.^_^. |
|
|