c++将类对象写入文件
时间: 2023-09-10 10:08:04 浏览: 116
要将C++类对象写入文件,可以使用文件输入/输出流和类对象的序列化。序列化是将数据结构或对象转换为字节流的过程,以便可以在网络或文件系统中传输或存储。
以下是一个简单的例子,将一个名为`Person`的类对象写入文件中:
```c++
#include <fstream>
#include <iostream>
class Person {
public:
std::string name;
int age;
void serialize(std::ostream& os) const {
os.write(name.c_str(), name.size() + 1);
os.write(reinterpret_cast<const char*>(&age), sizeof(age));
}
void deserialize(std::istream& is) {
char buffer[256];
is.getline(buffer, 256);
name = buffer;
is.read(reinterpret_cast<char*>(&age), sizeof(age));
}
};
int main() {
Person p{"Alice", 25};
// Writing to file
std::ofstream outfile("person.dat", std::ios::binary);
p.serialize(outfile);
outfile.close();
// Reading from file
std::ifstream infile("person.dat", std::ios::binary);
Person p2;
p2.deserialize(infile);
infile.close();
// Displaying result
std::cout << "Name: " << p2.name << ", Age: " << p2.age << std::endl;
return 0;
}
```
在上面的例子中,`Person`类有两个成员变量:`name`和`age`,并且包括两个成员函数:`serialize`和`deserialize`。`serialize`函数将对象写入流中,`deserialize`函数从流中读取对象。在主函数中,我们创建一个`Person`对象`p`,将其写入文件中,并从文件中读取一个新的`Person`对象`p2`。最后,我们打印`p2`对象的`name`和`age`成员变量。
请注意,`std::ios::binary`参数用于二进制文件的读写,以确保数据按照原样写入和读取。此外,`serialize`和`deserialize`函数应该是`const`成员函数,以确保它们不会修改对象的状态。
阅读全文