用fstream把一个结构体用二进制存进文件,但是读取时失败。

比如这样fstream fp;fp.open("StartBook",ios::in|ios::out|ios::binary);fp.write((char*)&(stuent),sizeof(student));student是个类,然后我这样读fp.read((char*)&(sutdent),sizeof(student));这里就出错了,编译能通过,但是程序就死了
2026年09月16日 23:06
有3个网友回答
网友(1):

不知道你写在啥地方的,如果是MFC中的话,一个程序中写了一个文件再读是不能成功的,这个是CDoc类自身的一个机制,就和Word一样,你一个文档点了保存以后再打开是打不开的,另外,你这样读有点怪,MSDN里面显示一般都是用“<<”和“>>”来进行数据读取的,一般都是读取结构体的成员,我没有查到fsream支持write和read操作,呵呵,可能是我的MSDN版本老了。

网友(2):

student是个类,这样存取应该是不行的,类的sizeof也是个很不精确的概念
关于类的流化,MFC有自己专门的办法。当然你也可以自己把类内部的数据保存到一个文件中,然后读取的时候先创建类,再读取数据赋值进去。

网友(3):

感觉你读写冲突
建议先打开文件写,再打开文件读。用fstream同时进行读写总感觉不够安全。