
mfc中的cfile的read不能正确读取数据
2015-03-14
展开全部
CFile::Open成功打开文件后,使用 GetLength 获取文件的长度,nFileLen;
然后 new 一块内存。char*lpBuf = new char[nFileLen];
再使用 Read( lpBuf, nFileLen);
文件的数据就装入到 lpBuf指向的内存块了。
Read是从当前游标开始读取,默认是文件起始,可以使用 Seek/ SeekToBegin / SeekToEnd 来定位。
“怎么吧结构体的指针pstruct与Read函数关联起来”——你文件中如果存的是某种结构化数据(里面最好别包含指针变量)。可以直接使用 pstruct = (MYSTRUCT*) (lpBuf+x); 来强制转换,x表示偏移位置。
如果你的结构体里面包含指针对象(尤其是字符串成员),那么请使用序列号模式来存放结构数据,MFC提供的 CArchive 类,>> << 2个成员函数就能实现结构化数据的保存装入了,使用比较简单。主要是装入和保存时候要一一匹配别搞错就行。
具体看看MSDN吧,有不少例子。
然后 new 一块内存。char*lpBuf = new char[nFileLen];
再使用 Read( lpBuf, nFileLen);
文件的数据就装入到 lpBuf指向的内存块了。
Read是从当前游标开始读取,默认是文件起始,可以使用 Seek/ SeekToBegin / SeekToEnd 来定位。
“怎么吧结构体的指针pstruct与Read函数关联起来”——你文件中如果存的是某种结构化数据(里面最好别包含指针变量)。可以直接使用 pstruct = (MYSTRUCT*) (lpBuf+x); 来强制转换,x表示偏移位置。
如果你的结构体里面包含指针对象(尤其是字符串成员),那么请使用序列号模式来存放结构数据,MFC提供的 CArchive 类,>> << 2个成员函数就能实现结构化数据的保存装入了,使用比较简单。主要是装入和保存时候要一一匹配别搞错就行。
具体看看MSDN吧,有不少例子。
追问
读出的一个节点中,只有一个域不对,而其它域豆对,啥原因?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询