用fstream类判断文件状态
时间: 2023-06-15 16:04:29 浏览: 88
可以使用fstream类中的成员函数来判断文件状态。常用的有以下几个:
1. `is_open()`:判断文件是否已经打开。
2. `good()`:判断文件是否正常,即没有遇到错误。
3. `fail()`:判断文件是否发生了读写错误。
4. `eof()`:判断是否已经读到文件末尾。
5. `bad()`:判断文件是否非常严重的错误,如硬盘故障。
下面是一个示例代码,演示如何使用fstream类的成员函数来判断文件状态:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string filename = "example.txt";
ofstream outfile(filename);
if (!outfile.is_open()) {
cout << "File open failed!" << endl;
return -1;
}
outfile << "This is an example file." << endl;
if (outfile.fail()) {
cout << "Write failed!" << endl;
return -1;
}
outfile.close();
ifstream infile(filename);
if (!infile.is_open()) {
cout << "File open failed!" << endl;
return -1;
}
string line;
getline(infile, line);
if (infile.fail()) {
cout << "Read failed!" << endl;
return -1;
}
cout << "Read line: " << line << endl;
if (infile.eof()) {
cout << "Reach the end of file!" << endl;
}
infile.close();
return 0;
}
```
在这个示例代码中,我们首先尝试打开一个输出文件,并使用`is_open()`函数判断文件是否成功打开。然后我们向文件中写入一行数据,并使用`fail()`函数判断写操作是否成功。接下来我们关闭文件,并尝试打开同一个文件进行读操作。我们使用`is_open()`函数判断文件是否成功打开,并使用`fail()`函数判断读操作是否成功。最后我们使用`getline()`函数读取一行数据,并使用`eof()`函数判断是否已经读到文件末尾。如果在任何一步操作中发生了错误,我们会输出错误信息并退出程序。
阅读全文