CFile::Read()怎么用,MFC中。。。。

virtualUINTRead(void*lpBuf,UINTnCount);这是Read函数的代码,我大体知道这个函数的功能void*lpBuf,是把资源读入哪里UIN... virtual UINT Read(
void* lpBuf,
UINT nCount
);
这是Read函数的代码,我大体知道这个函数的功能
void* lpBuf,是把资源读入哪里
UINT nCount ,是读入的字节数
但是我不知道这个函数从那开始读。。。。。
就比如我有一个结构体,
怎么吧结构体的指针pstruct与Read函数关联起来。。。
谢谢
展开
 我来答
stone_dongdong
推荐于2016-03-30 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1019万
展开全部
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吧,有不少例子。
guozhaojing001
2010-12-25 · TA获得超过509个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:129万
展开全部
CFile::Open()函数打开文件后,文件内容指针指向文件的第一个字节的位置,CFile::Seek()函数可以修改读取的位置(位置以字节为单位)。
file.Read(pstruct,sizeof(YOUR_STUCT));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
年年好运zhl
2018-04-13 · TA获得超过1.4万个赞
知道小有建树答主
回答量:508
采纳率:100%
帮助的人:14.5万
展开全部

CFile::Open()函数打开文件后,内容指针指向文件的第一个字节的位置,CFile::Seek()函数可以修改读取的位置。

  1. CFile::Open成功打开文件后,使用 GetLength 获取文件的长度,nFileLen。

  2. 可以使用 Seek/ SeekToBegin / SeekToEnd 来定位。

  3. 直接使用 pstruct = (MYSTRUCT*) (lpBuf+x); 来强制转换,x表示偏移位置。

  4. 使用序列号模式来存放结构数据,MFC提供的 CArchive 类,>> << 2个成员函数就能实现结构化数据的保存装入了。

  5. 使用比较简单。主要是装入和保存时候要匹配别搞错就行。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kingstarer
2010-12-25 · TA获得超过584个赞
知道小有建树答主
回答量:516
采纳率:0%
帮助的人:522万
展开全部
这个函数是从文件读的

从文件中读取数据并放到lpBuf中

如果你只是要读内存 直接用memcpy即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郑启道
2010-12-25 · TA获得超过322个赞
知道小有建树答主
回答量:265
采纳率:0%
帮助的人:307万
展开全部
你可以采用序列化serialize的方式,直接从读取结构体内容,可以参照msdn里面的例子scrib,里面有详细的讲解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式