c++实现一个文件类,包含读文件写文件,使用标准IO,using namespace std,使用fopen,fread,fwrite等
时间: 2024-12-16 16:15:05 浏览: 5
在C++中,我们可以创建一个简单的文件操作类FileHandler,它包含了基本的读取(read)和写入(write)文件功能,这里我们使用`fstream`库来处理文件操作,它是标准输入输出流的一部分。以下是基础的实现:
```cpp
#include <iostream>
#include <fstream>
#include <string>
class FileHandler {
public:
// 构造函数和析构函数
FileHandler(const std::string& filename, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out) : file(filename, mode) {}
~FileHandler() { if (file.is_open()) file.close(); }
// 读取文件内容
std::string readAll() {
std::string content;
if (!file.is_open()) return "Error opening the file.";
file.seekg(0, std::ios::end);
content.resize(file.tellg());
file.seekg(0, std::ios::beg);
file.read(content.data(), content.size());
return content;
}
// 写入文件内容
void write(const std::string& data) {
if (!file.is_open()) file.open(file.filename(), std::ios_base::out);
if (file.is_open()) {
file.write(data.c_str(), data.length());
} else {
std::cout << "Error writing to the file." << std::endl;
}
}
private:
std::ifstream inputFile; // 用于读取
std::ofstream outputFile; // 用于写入
};
// 使用示例
int main() {
FileHandler reader("test.txt", std::ios_base::in);
if (reader.isFileOpen()) {
std::string content = reader.readAll();
std::cout << "File content: " << content << std::endl;
}
FileHandler writer("test.txt", std::ios_base::out | std::ios_base::trunc);
writer.write("Hello, this is a test.\n");
return 0;
}
```
在这个例子中,`FileHandler`类有两个成员变量,分别对应`ifstream`和`ofstream`,分别用于读和写。构造函数接收文件名和打开模式作为参数,并确保在使用完后关闭文件。
注意,为了简化起见,这个类假设如果试图写入一个已经存在的只读文件,会尝试打开它并覆盖原有内容(通过设置`std::ios_base::out | std::ios_base::trunc`)。在实际应用中,可能会需要更复杂的错误处理机制。
阅读全文