C++操作文件_文件出错检测方法

文件出错检测

文件出错检测主要依靠流对象标志位来检测:

ios::eofbit 当遇到输入流尾部时,设置该位。即打开文件进行读操作,当文件进行到尾部时,结束。
ios::failbit 当操作失败时,设置该位。例如文件没有数据时还要进行读操作,操作失败。
ios::hardfail 当文件出现不可恢复的错误时,设置该位。
ios::badfit 当出现无效操作时设置该位。比如文件是只读但要进行写操作。
ios::goodbit 当上述所有状态都未设置时设置该位。表明处于正常

这些状态位可以通过函数来检测:

eof():如果设置了eofbit状态位,该函数返回true或者false。
fail():如果设置了failbit或者hardbit状态位。
bad():如果设置了badbit状态位。
good():如果设置了goodbit状态位。
clear():调用该函数,清初所有状态位。

例程:

#include<iostream>
#include<fstream>
using namespace std;
void showState(fstream&);
void main() {
	int num = 10;
	fstream testFile("C:\\Users\\张嘉晖\\Desktop\\iss.txt", ios::out);
	if (testFile.fail()) {
		cout << "打开文件失败!\n";
		exit(0);
	}cout << "向文件中写数据:\n";
	testFile << num;
	showState(testFile);
	testFile.close();
	testFile.open("C:\\Users\\zjh\\Desktop\\iss.txt", ios::in);
	if (testFile.fail()) {
		cout << "打开文件失败!\n";
		exit(0);
	}testFile >> num;
	showState(testFile);
	testFile >> num;
	showState(testFile);
	testFile.close();
}void showState(fstream &file) {
	cout << "当前文件状态如下:\n" ;
	cout << " eofbit:" << file.eof() << "  ";
	cout << " failbit:" << file.fail() << "  ";
	cout << " badbit:" << file.bad() << "  ";
	cout << " goodbit:" << file.good() << "  "<<endl;
	file.clear();
}

运行结果:
向文件中写数据:
当前文件状态如下:
eofbit:0 failbit:0 badbit:0 goodbit:1
当前文件状态如下:
eofbit:1 failbit:0 badbit:0 goodbit:0
当前文件状态如下:
eofbit:1 failbit:1 badbit:0 goodbit:0

第一次出现goodbit说明操作正常,写入字符num。
第二次出现eofbit说明已经到文件末尾。
第三次出现错误,没有读到字符。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值