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

virtual UINT Read(
void* lpBuf,
UINT nCount
);
这是Read函数的代码,我大体知道这个函数的功能
void* lpBuf,是把资源读入哪里
UINT nCount ,是读入的字节数
但是我不知道这个函数从那开始读。。。。。
就比如我有一个结构体,
怎么吧结构体的指针pstruct与Read函数关联起来。。。
谢谢

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吧,有不少例子。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-25
CFile::Open()函数打开文件后,文件内容指针指向文件的第一个字节的位置,CFile::Seek()函数可以修改读取的位置(位置以字节为单位)。
file.Read(pstruct,sizeof(YOUR_STUCT));
第2个回答  2018-04-13

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

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

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

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

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

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

本回答被网友采纳
第3个回答  2010-12-25
这个函数是从文件读的

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

如果你只是要读内存 直接用memcpy即可
第4个回答  2010-12-25
你可以采用序列化serialize的方式,直接从读取结构体内容,可以参照msdn里面的例子scrib,里面有详细的讲解。

CFile::Read()怎么用,MFC中。。。
CFile::Open成功打开文件后,使用 GetLength 获取文件的长度,nFileLen;然后 new 一块内存。char*lpBuf = new char[nFileLen];再使用 Read( lpBuf, nFileLen);文件的数据就装入到 lpBuf指向的内存块了。Read是从当前游标开始读取,默认是文件起始,可以使用 Seek\/ SeekToBegin \/ SeekToEnd 来定位。“...

mfc中cfile怎么对文档进行搜索并显示选中急!!!
先读到内存buffer里(大文件,循环分块读取),再对内存变量搜索 你要是直接对文件搜索...冒汗...况且“并显示选中”肯定是在界面里体现,在界面里体现数据肯定要先读出来...个人意见,有错难免...

MFC中CFile::Read抛出异常,错误码5(access denied)
你这个代码的逻辑判断有问题,!CFile::Open 是打开失败的情况,这种情况应该出错误提示,并进行错误处理和退出函数。只有在相反的情况下才能进行文件读取。if (!fImage.Open(szFullFileName, CFile::readOnly|CFile::shareDenyRead)){\/\/打开失败了AfxMessageBox("xxx");\/\/处理打开失败情况}else{ fIma...

mfc中如何处理文件共享违例
回答:首先,CFile有打开属性CFile::shareDenyNone 不禁止其它进程读写访问文件,加上之后可以共享访问 你CFile打开(包括通过构造函数打开)后需要关闭,在Input函数最末添加一行代码: file.Close();在调用Input函数之前那段代码也要加。

为什么我在MFC中调用 CFile::Read() 时 读到的值比实际内容多了很多空...
两种可能:1、你的文件中可能有空格换行,tab等空白字符。2、你的显示代码在遇到0后没结束。

VC++ MFC中,要怎么实现科学计算器的记忆功能呢?计算的基本功能都实现了...
使用CFile类的Read,Write函数读写文件。使用C++的 ofstream和ifstream读写文件也行。就是每点击一次计算按钮,就把使用到的那组数写入文件。

MFC GetPrivateProfile与CFile.read
GetPrivateProfile只能用于读取后缀为.ini的文件,而且文件的格式也必须是固定的。ini文件的格式必须是这样的:[section]key=value ..如果你的文件格式不要这样的话,就不能用GetPrivateProfile。这时候必须用CFile或者CStdioFile。CFile是按字节读取的 CStdioFile是按行读取的。至于你说的用CFile读取的时候,...

MFC用CFile的什么函数保存文件?
CFile对象的Write函数用来写文件,要把一个CString对象写入到文件中,可这样写:CFile file(file_path,CFile::modeReadWrite|CFile::modeCreate);file.Write(str.GetBuffer(),str.GetLength()*sizeof(TCHAR));其中,file_path是一个字符串或CString对象,用来指示你要操作的文件的路径。str是你要写的...

CFile在C++中是怎么用的,是什么意思?
CFile是MFC文件类的基类,它直接提供非缓冲的二进制磁盘输入\/输出设备,并直接地通过派生类支持文本文件和内存文件。1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了...

MFC open一个文件后,能否像fstream一样对里面的数据进行流操作?_百度...
CFile有Read函数,用法:double xin,yin;in.Read(&xin,sizeof(double));in.Read(&yin,sizeof(double));

相似回答