首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++流的有关问题

2012-03-19 
C++流的问题#include iostream.h#include stdlib.hintmain(){intivalwhile(cin ival,!cin.eof()){

C++流的问题
#include <iostream.h>  
#include <stdlib.h>  

int   main()  
{  
int   ival;  
while(cin> > ival,!cin.eof())  
{  
if(cin.bad())  
{  
exit(1);  
}  
if(cin.fail())  
{  
cerr < < "bad   date ";  
cin.clear(istream::failbit);  


continue;  
}  
cout < <ival < <endl;  
}  
return   0;  
}  
为什么输入错误后老是无限输出bad   date;  
我不是设了cin.clear(istream::failbit)了


[解决办法]
if(cin.fail())
{
cerr < < "bad date ";
cin.clear(istream::failbit);
continue;
}
==》
if(cin.fail())
{
cerr < < "bad date ";
cin.clear(); //清除所有的错误标记
continue;
}

[解决办法]
通常 failbit 和 badbit 错误标志是同时被置位的,
仅仅清除 failbit 还是cerr ..
[解决办法]
还需要清除缓冲
[解决办法]
if(cin.fail())
{
cerr < < "bad date ";
cin.clear(istream::failbit);
cin.sync(); //增加这个语句
continue;
}
[解决办法]
错误输入由于输入不匹配,
cin 出错,
输入的内容不被接收,
仍在缓冲中,
下一次循环的时候输入从缓冲读取,
还是出错。

所以需要 cin.sync(); 把缓冲内容清除 ...
[解决办法]
试贴
[解决办法]
跟楼主同样的问题。这段代码貌似就是C++ primer第四版上的一段例程。。。
[解决办法]
嗯,当初俺也是加了cin.sync才好的……

热点排行