我是靠谱客的博主 忧伤往事,最近开发中收集的这篇文章主要介绍fstream中字符流方式替换MFC中CFile文件读写,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在看算法时,提供了一部分使用MFC编写的代码,为将其便于处理,我使用非MFC代码来替换处理。

1.CFILE类是MFC的文件基类,他直接提供无缓冲的二进制磁盘I/O操作。

1)打开/创建文件

open函数原型如下:


BOOL CFile::Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pException)

//pszFileName是文件名,可包含文件路径,若只有文件名,则默认路径为工程路径,nOpenFlags是文件打开模式,pError是打开失败时用来接收失败信息,一般设置为NULL。其中各参数的设置,可查阅https://blog.csdn.net/zhang_fei_fresh/article/details/76408636

2)Read函数原型如下:

UINT Read (void* lpBuf,UINT nCount); 

lpBuf是从文件中读取到的数据的内存Buf指针,nCount是从文件读取的字节数

原MFC编写代码文件如下:

CFile imageFile;
CString sFName="打开的路径";
imageFile.Open(sFName, CFile::modeReadWrite, &fileException);
long pageHei;
imageFile.Read(&pageHei, 4);

 现在目标将以上代码转换为fstream输入输出流。

打开文件ifstream::open

void open (const   char* filename,  ios_base::openmode mode = ios_base::in);
void open (const string& filename,  ios_base::openmode mode = ios_base::in);

filename 要打开文件的文件名,mode 打开文件的方式,具体的参数设置可以参考

https://blog.csdn.net/sinat_36219858/article/details/80369255

由于CFile提供的是二进制磁盘I/O操作,因此打开文件的方式应选择ios::binary

ifstream imageFile;
string SFName="打开的路径";
imageFile.open(SFName, ios::in | ios::binary);
long pageHei;
imageFile.read((char*)(&pageHei), 4);

函数原型 istream& read (char* s, streamsize n); //用来暂存内容的数组(必须是char*型),以及流的长度

同理,write操作也可类似转换。

文中若有错误以及不妥的地方,还望指出,以便共同学习。

最后

以上就是忧伤往事为你收集整理的fstream中字符流方式替换MFC中CFile文件读写的全部内容,希望文章能够帮你解决fstream中字符流方式替换MFC中CFile文件读写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部