概述
在看算法时,提供了一部分使用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文件读写所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复