Win32中MFC中的CStdioFile类
CStdioFile类
它是继承CFile类的
class CStdioFile : public CFile,为什么需要一个CStdioFile类,封装来封装去不麻烦的吗,我一开始是这样想着的。我第一次看到这个类是在看公司前辈们的代码,他们写日志文件的都用这个类的,然后我去了解了一下它。
CStdioFile类的作用
CStdioFile继承了CFile,是CFile的子类,扩展了文本文件的操作,认识回车换行字符,可以进行一行字符串的读写。WriteString()和ReadString()是它特有的函数。
CStdioFile::WriteString()函数
函数原型:
void WriteString(LPCTSTR lpsz);
函数功能是:
向文件写入一行字符。
CStdioFile::ReadString()函数
函数原型
BOOL ReadString(CString &str);
函数功能是读一行字符串。
对比CFile类和CStdioFile类
Cfile类提供了基于二进制流的文件操作,功能类似于C语言中的fread()和fwrite()函数。
CStdioFile提供了基于字符串流的文件操作,功能类似于C语言中的fgets()和fputs()函数。
来一个复杂的CFile类与CStdioFile的例子
CString CAITDlg::GenSN ()
{if ( !PathFileExists(m_RecordPath) && !CreateDirectoryA(m_RecordPath, NULL) ){AfxMessageBox("无法建立如下的文件夹!\r\n" + m_RecordPath);CString t;return t;}SYSTEMTIME sysTime;CString filename, tempStr, Date;GetLocalTime(&sysTime);tempStr.Format("%04d-%02d-%02d.txt", sysTime.wYear, sysTime.wMonth, sysTime.wDay);Date.Format("%04d%02d%02d", sysTime.wYear, sysTime.wMonth, sysTime.wDay);filename = m_RecordPath + tempStr;CStdioFile LogFile;CFileException fileException;CString tmp;if (!PathFileExists(filename))//写日志文件{LogFile.Open(filename,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite);LogFile.Seek(0, CFile::end);LogFile.WriteString ("0000");tmp = "0000";CString Number = tmp;int n = atoi (Number.GetBuffer ());n++;Number.Format ("%04d", n);LogFile.Seek(0, 0);LogFile.WriteString (Number);LogFile.Close ();}else{LogFile.Open(filename,CFile::typeText|CFile::modeReadWrite);CString Number;LogFile.ReadString (Number);tmp = Number;int n = atoi (Number.GetBuffer ());n++;Number.Format ("%04d", n);LogFile.Seek(0, 0);LogFile.WriteString (Number);LogFile.Close ();}CString RetStr = "D08A";CString Ystr, Mstr, Dstr;Ystr.Format ("%d", sysTime.wYear);Ystr = Ystr[Ystr.GetLength () - 1];if (sysTime.wMonth < 10){Mstr.Format ("%d", sysTime.wMonth);}else if (sysTime.wMonth == 10)Mstr = "A";else if (sysTime.wMonth == 11)Mstr = "B";else if (sysTime.wMonth == 12)Mstr = "C";if (sysTime.wDay < 10)Dstr.Format ("%d", sysTime.wDay);else if (sysTime.wDay == 10)Dstr.Format ("%c", 'A');else if (sysTime.wDay == 11)Dstr.Format ("%c", 'B');else if (sysTime.wDay == 12)Dstr.Format ("%c", 'C');else if (sysTime.wDay == 13)Dstr.Format ("%c", 'D');else if (sysTime.wDay == 14)Dstr.Format ("%c", 'E');else if (sysTime.wDay == 15)Dstr.Format ("%c", 'F');else if (sysTime.wDay == 16)Dstr.Format ("%c", 'G');else if (sysTime.wDay == 17)Dstr.Format ("%c", 'H');else if (sysTime.wDay == 18)Dstr.Format ("%c", 'J');else if (sysTime.wDay == 19)Dstr.Format ("%c", 'K');else if (sysTime.wDay == 20)Dstr.Format ("%c", 'L');else if (sysTime.wDay == 21)Dstr.Format ("%c", 'M');else if (sysTime.wDay == 22)Dstr.Format ("%c", 'N');else if (sysTime.wDay == 23)Dstr.Format ("%c", 'P');else if (sysTime.wDay == 24)Dstr.Format ("%c", 'Q');else if (sysTime.wDay == 25)Dstr.Format ("%c", 'R');else if (sysTime.wDay == 26)Dstr.Format ("%c", 'S');else if (sysTime.wDay == 27)Dstr.Format ("%c", 'T');else if (sysTime.wDay == 28)Dstr.Format ("%c", 'W');else if (sysTime.wDay == 29)Dstr.Format ("%c", 'X');else if (sysTime.wDay == 30)Dstr.Format ("%c", 'Y');else if (sysTime.wDay == 31)Dstr.Format ("%c", 'Z');RetStr += Ystr;RetStr += Mstr;RetStr += Dstr;RetStr += tmp;return RetStr;
}
Win32中MFC中的CStdioFile类相关推荐
- MFC中的CAsyncSocket类实现网络通信
近年来,利用Internet进行网际间通讯,在WWW浏 览.FTP.Gopher这些常规服务,以及在网络电话.多媒体会议等这些对实时性要求严格 的应用中成为研究的热点,而且已经是必需的了.Window ...
- VC的Win32控制台程序中使用MFC库文件
如果想要在VC中的Win32控制台程序中使用CString类,应注意下列情况: 1.必须包含头文件#include <afx.h> 2.Project ----settings... -- ...
- MFC中的几个常用类——CFileDialog
2019独角兽企业重金招聘Python工程师标准>>> 1 简介 CFileDialog类封装了Windows常用的文件对话框.常用的文件对话框提供了一种简单的与Windows标准相 ...
- VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)
这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...
- C++中的fstream/ifstream/ofstream和MFC中的CFile/CStdioFile
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: ...
- MFC中的几个常用类——CWnd
2019独角兽企业重金招聘Python工程师标准>>> 1 窗口类 1.1 概述 CObject └CCmdTarget └CWnd CWnd是MFC窗口类的 基类,提供了微软基础类 ...
- QT和MFC中怎么使用继承基类的自定义控件放置在界面上
1.Qt中自定义button继承于QPushButton,f2查看指定控件的声明定义,可以手动改ui.form.h文件里各个类型的控件指针变量,改成自己定义的" (这里ui.form.h在工 ...
- MFC中五个初始类的作用
MFC中五个初始类的作用 https://blog.csdn.net/thisispan/article/details/7393401
- MFC中获取App,MainFrame,Doc和View类等指针的方法
From: http://hi.baidu.com/wxnxs/item/156a68f5b3b4ed18e3e3bd03 MFC中获取App,MainFrame,Doc和View类等指针的方法 1 ...
最新文章
- ElasticSearch 被攻击勒索
- TCP三次握手,握的是啥?
- 零基础学HTML5和CSS3前端开发第一课
- CF思维联系–CodeForces - 225C. Barcode(二路动态规划)
- 数据结构基础:线性表学习笔记
- 自然数,实数,有理数,整数,分数,无理数
- YbtOJ#893-带权的图【高斯消元,结论】
- matlab简单分析短时傅里叶变换STFT
- 理光打印机如何设置邮件服务器,技术员帮您win10系统网络共享理光打印机的设置方法的操作办法...
- POJ 1755 Triathlon(半平面交)
- php java node 并发,Node、PHP、Java 和 Go 服务端 I/O 性能PK
- ENVI5.1中Landsat 8数据大气校正
- 可变临时邮箱,亲测可用,附使用教程
- 【开发工具】MySQL免安装版
- linux系统编程实训总结,linux实训总结与体会
- 后门攻击阅读笔记,Input-aware dynamic backdoor attack
- 对数正态分布随机数c语言,在python中从对数正态分布生成随机数
- 基于Spark实现电影点评系统用户行为分析—RDD篇(一)
- 日期函数之Dateadd、Datediff
- vim美化插件,让你的vim与众不同
热门文章
- html中百分比是怎样计算的,css 中的百分比计算方法
- 新闻稿传播才能达到更好的效果
- 图片大小怎么改小?两个超简单的方法教给大家
- Redmibook pro 15 开机报错No bootable device
- 【存储】cache memory、primary memory and secondary memory
- 服务器配置DNS辅助区域出错
- intel nuc 11 新机装win 10系统避坑指南
- (附源码)计算机毕业设计JavaJava毕设项目餐饮掌上设备点餐系统
- 【一文学会文件上传】SpringBoot+form表单实现文件上传
- 长尾理论的关键点 or 重要特征