积极答复者
MSVC 下的 fmemopen

问题
答案
-
如果只是单纯的由CFile得到FILE*,是可以做到的
CFile file(_T("F:\\11.txt"), CFile::modeRead);FILE* f = _tfdopen (_open_osfhandle(fin.m_hFile, NULL), _T("rb"));
而CMemFile类是CFile类的派生类Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已建议为答案 Helen Zhao 2012年2月20日 3:28
- 已标记为答案 Helen Zhao 2012年2月20日 3:28
-
你上面做法的前提是,磁盘上面有一个这个文件,然后用CFile来打开这个文件,读数据到内存中,此时这个文件句柄是可以转换成FILE*的,因为它有磁盘文件的句柄,我的需求是,一片内存区域,用FILE*来操作,没有磁盘文件作为依托.
不过,你倒提醒了我,可以将这段内存写入系统的临时文件,然后就可以通过FILE*来操作这个临时文件,完了之后把这个临时文件删除就可以了.
谢谢指点!emyueguang
- 已建议为答案 Helen Zhao 2012年2月20日 3:28
- 已标记为答案 Helen Zhao 2012年2月20日 3:28
全部回复
-
如果只是单纯的由CFile得到FILE*,是可以做到的
CFile file(_T("F:\\11.txt"), CFile::modeRead);FILE* f = _tfdopen (_open_osfhandle(fin.m_hFile, NULL), _T("rb"));
而CMemFile类是CFile类的派生类Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
- 已建议为答案 Helen Zhao 2012年2月20日 3:28
- 已标记为答案 Helen Zhao 2012年2月20日 3:28
-
CMemFile的文件句柄不可以转换成FILE*,所以这个不行,如果可以找到一个将CMemFile的句柄转换成FILE*的,也就OK了.
emyueguang
Please refer: http://www.codeproject.com/Articles/1044/A-Handy-Guide-To-Handling-HandlesVisual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
-
你上面做法的前提是,磁盘上面有一个这个文件,然后用CFile来打开这个文件,读数据到内存中,此时这个文件句柄是可以转换成FILE*的,因为它有磁盘文件的句柄,我的需求是,一片内存区域,用FILE*来操作,没有磁盘文件作为依托.
不过,你倒提醒了我,可以将这段内存写入系统的临时文件,然后就可以通过FILE*来操作这个临时文件,完了之后把这个临时文件删除就可以了.
谢谢指点!emyueguang
- 已建议为答案 Helen Zhao 2012年2月20日 3:28
- 已标记为答案 Helen Zhao 2012年2月20日 3:28