从文件读取对象并获取错误
Reading objects from file and getting error
(这是一个家庭作业项目。)我试图从A类编写对象(包含几个字符串和INT,也包含来自B类的对象的列表)。然后,我必须从文件中读回这些对象并显示其内容。我正在使用此代码:
写作:
ofstream ofs("filestorage.bin", ios::app|ios::binary);
A d;
ofs.write((char *)&d, sizeof(d));
ofs.close();
阅读:
ifstream ifs("filestorage.bin", ios::binary);
A e(1);
while(ifs.read((char *)&e, sizeof(e))) {
cout<<e;
}
ifs.close();
<<
已经重新定义。
它将数据写入文件中,然后将其读回,显示我想要的所有内容,但最终我遇到了一个不错的脂肪"访问违规"错误。我还尝试将简单变量写入文件中(例如int
s)。效果很好;但是,当我尝试阅读对象或字符串时,我会得到"访问违规"。写作接缝是可以的,因为我没有错误。
您能告诉我为什么会发生这种情况以及我该如何解决?如果有必要,我也可以发布我的A和B课程。谢谢!
为您的班级实现两个运算符<<
和>>
。
class A {
int a;
string s;
pubilc:
friend ostream& operator<< (ostream& out, A& a ) {
out << a.a << endl;
out << a.s << endl;
}
friend istream& operator>> (istream& is, A& a ) {
//check that the stream is valid and handle appropriately.
is >> a.a;
is >> a.s;
}
};
写:
A b;
ofstream ofs("filestorage.bin", ios::app|ios::binary);
ofs << b;
阅读:
fstream ifs("filestorage.bin", ios::binary);
A b;
ifs >> b;
您可以尝试检查流状态
while(ifs.read((char *)&e, sizeof(e)).good()){
cout<<e;
}
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 使用 strcat 获取缓冲区溢出错误
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- 在 alglib::real_1d_array 中获取元素总和的奇怪错误
- 无法使函数公开。获取:"LNK2005"错误。如何调试链接器错误
- 为什么我在空指针错误(链表)中获取成员访问权限
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 获取毫秒延迟的错误值
- 获取 clang++:错误:在编译文件系统库的代码时
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- 从两个 4x64 位整数数组中获取取模
- 如何在常量计算表达式中获取编译时错误?
- Assimp 库错误:获取打包成员的地址
- 错误:获取临时地址
- [错误]获取C++中临时数组的地址
- 错误:获取临时[-fpermissive] -npc_multivendor的地址
- C++:为“char [4]”数组错误获取太多初始值设定项
- 字符串数据成员的指针错误 - 获取访问冲突
- 调用派生类时 - 错误:获取临时 [-fallowive] 的地址