c++中使用fstream读取对象
Reading object using fstream in C++
我试图使用fstream
将对象写入文件并读取后,但当我尝试使用cout显示屏幕上读取的对象时,出现了错误消息Segmentation fault: 11
。有人能帮我破解这个密码吗?提前感谢!
Produto *p1 = new Produto(1, "Refrigerante");
cout << "Produto p1 (pre serializacao): (" << p1->codigo << ") " << p1->descricao << endl;
ofstream serializationWriter;
serializationWriter.open("myobject.dat", ios::binary);
serializationWriter.write((char *)&p1, sizeof(p1));
Produto *p2;
ifstream serializationReader;
serializationReader.open("myobject.dat", ios::binary);
serializationReader.read((char *)&p2, sizeof(p2));
cout << "Produto p2 (pos serializacao): (" << p2->codigo << ") " << p2->descricao << endl;
您需要为类producto提供一些序列化机制。例如:
class Produto {
// ...
private:
std::string m_str;
private:
friend ostream& operator<<(ostream& stream, const Produto& obj);
friend istream& operator>>(istream& stream, Prodoto& obj)
};
ostream& operator<<(ostream& stream, const Produto& obj)
{
// Write all data to stream.
// ...
stream << obj.m_str;
return stream;
}
istream& operator>>(istream& stream, Prodoto& obj)
{
// Read all data from strem.
// ...
stream >> obj.m_str;
return stream;
}
然后按如下方式使用:
Produto p1(1, "Refrigerante");
ofstream serializationWriter;
// ...
serializationWriter << p1;
Produto p2;
ifstream serializationReader;
// ...
serializationReader >> p2;
详细信息请参见重载ostream istream operator
相关文章:
- 我可以读取静态对象中的文件.txt吗?C++
- 如何从文件中读取指向对象的指针?
- 读取互斥对象范围之外的volatile变量,而不是std::atomic
- 用rapidjson读取子对象向量
- 如何在C++中读取 HDF5 对象引用
- 尝试从文本文件读取到对象数组
- 如何使用 QDataStream 从 QTcpSocket 读取类对象?
- 在 c++ 中从数据文件中读取值对象
- 无法在C++中对从文件中读取的对象进行排序
- C nonlohmann json读取子对象
- 使用getline()从文本文件中读取行,然后将push_back读取到对象的向量中
- 从文件读取到对象
- 从文件c++中读取类对象
- C++:如何从文件读取到对象向量
- 从读取到对象指针数组的文件获取段错误
- 如何从文件中读取类对象的矢量
- C++ - 如何编写和读取包含对象的结构?(写入和读取二进制文件)
- 使用指向成员的指针读取 cons 对象的字段的值
- 使用 boost::asio::read_async 读取 Protobuf 对象
- GMtime 不适用于使用重载运算符读取的对象