eof() 和fail()

OF是End Of File 的缩写,表示“文件结束”。
从输入流读取数据,如果到达文件末尾(遇到文件结束符),eof函数值为非零值(表示真),如果未到文件结尾则为0(表示假)。
eof 函数用来判断是否到达文件结尾;

fail()用来判断一个流是否“坏”掉了。如果failbit、badbit中任意一种或两种被设置,则fail()返回true,否则返回false;

调用方式cin.fail();

failbit-->记录流缓冲区的完整性的丧失
badbit-->记录未能从流中提取的有效场

其实这两种是ios类定义了这四个常量badbit, eofbit, failbit, goodbit中的两种,这四个标志常量就是取对应标志位的掩码,也即输入的四种异常情况! 
以上四个常量对应的取值为: 
ios::badbit    001   输入(输出)流出现致命错误,不可挽回  (文件受损或者硬件故障)
ios::eofbit    010   已经到达文件尾 
ios::failbit   100   输入(输出)流出现非致命错误,可挽回 (如读取类型中发生类型不匹配或者遇到eof时返回true)

ios::goodbit   000   流状态完全正常, 各异常标志位都为0 (注:good() 该方法在没有发生任何错误时返回true)

就一般说来,badbit是一些系统底层或者硬件出错,比如文件系统错误,磁盘错误,网络错误等等。failbit就是其他软件错误,如试图从不能解析为整数的字符串里想要读一个整数等,顺便说下eof也会造成failbit被置位。

你可能感兴趣的:(eof() 和fail())