将C++类写入/读取到二进制文件是一种序列化和反序列化的过程。序列化是将对象的状态信息转换为可以存储或传输的形式的过程,而反序列化则是将这些信息恢复为对象状态的过程。
<fstream>
库等。以下是一个简单的示例,展示如何使用C++的<fstream>
库将类写入二进制文件,并从文件中读取。
#include <iostream>
#include <fstream>
#include <string>
class Person {
public:
std::string name;
int age;
// 写入二进制文件
void writeToFile(const std::string& filename) {
std::ofstream outFile(filename, std::ios::binary);
if (!outFile) {
std::cerr << "Error opening file for writing: " << filename << std::endl;
return;
}
outFile.write(reinterpret_cast<const char*>(&age), sizeof(age));
outFile.write(name.c_str(), name.size() + 1);
outFile.close();
}
// 从二进制文件读取
void readFromFile(const std::string& filename) {
std::ifstream inFile(filename, std::ios::binary);
if (!inFile) {
std::cerr << "Error opening file for reading: " << filename << std::endl;
return;
}
inFile.read(reinterpret_cast<char*>(&age), sizeof(age));
char buffer[256];
inFile.getline(buffer, sizeof(buffer), '\0');
name = buffer;
inFile.close();
}
};
int main() {
Person p1;
p1.name = "Alice";
p1.age = 30;
// 写入文件
p1.writeToFile("person.bin");
Person p2;
// 从文件读取
p2.readFromFile("person.bin");
std::cout << "Name: " << p2.name << ", Age: " << p2.age << std::endl;
return 0;
}
通过以上示例和解释,你应该能够理解如何将C++类写入/读取到二进制文件,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云