1、eof()
如果读文件到达文件末尾,返回true。
2、bad()
如果在读写过程中出错,返回true。 例如:当我们要对一个不是打开为写状态进行写入时,或者我们要写入的设备没有剩余空间的时候。
3、fail()
出了与bad()同样的情况下会返回true以外,加上格式错误也会返回true,例如当想要读入一个整数,但输入了一个字母的时候,或者遇到eof,eof是一种fail,但fail不是一种eof。
4、good()
这是最通用的:如果调用以上任何一个函数返回true的话,此函数返回false。
4、clear()
标志位一旦被置位,这些标志将不会被改变,要想重置以上成员函数所检查的状态标志,你可以使用成员函数clear,没有参数。比如:通过函数移动文件指针,并不会使eofbit自动重置。
5、测试用例
#include<iostream>
using namespace std;
int main() {
int a;
cout << "before a bad input operation:"
<< "\n cin.eof():" << cin.eof()
<< "\n cin.fail():" << cin.fail()
<< "\n cin.bad():" << cin.bad()
<< "\n cin.good():" << cin.good() << endl;
cin >> a;
cout << "after a bad input operation:"
<< "\n cin.eof():" << cin.eof()
<< "\n cin.fail():" << cin.fail()
<< "\n cin.bad():" << cin.bad()
<< "\n cin.good():" << cin.good() << endl;
cin.clear();
cout << "\n cin.eof():" << cin.eof()
<< "\n cin.fail():" << cin.fail()
<< "\n cin.bad():" << cin.bad()
<< "\n cin.good():" << cin.good() << endl;
system("pause");
return 0;
}
当a的输入为字母时,输出结果:
初始eof,bad,fail置位都是0,good为1,当格式输入错误时,fail被置位为1,good相应就变成0,clear之后重新回到初始状态。
当a的输入时ctrl+z(结束符)时,输出结果:
这时eof也被置位为 1。
本文详细介绍了C++中用于文件操作的IO流状态标志,包括eof(), bad(), fail() 和 good()的功能及应用场景,并提供了示例代码来展示如何使用clear()重置标志位。
2400

被折叠的 条评论
为什么被折叠?



