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类相关推荐

  1. MFC中的CAsyncSocket类实现网络通信

    近年来,利用Internet进行网际间通讯,在WWW浏 览.FTP.Gopher这些常规服务,以及在网络电话.多媒体会议等这些对实时性要求严格 的应用中成为研究的热点,而且已经是必需的了.Window ...

  2. VC的Win32控制台程序中使用MFC库文件

    如果想要在VC中的Win32控制台程序中使用CString类,应注意下列情况: 1.必须包含头文件#include <afx.h> 2.Project ----settings... -- ...

  3. MFC中的几个常用类——CFileDialog

    2019独角兽企业重金招聘Python工程师标准>>> 1 简介 CFileDialog类封装了Windows常用的文件对话框.常用的文件对话框提供了一种简单的与Windows标准相 ...

  4. VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)

    这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...

  5. C++中的fstream/ifstream/ofstream和MFC中的CFile/CStdioFile

    在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: ...

  6. MFC中的几个常用类——CWnd

    2019独角兽企业重金招聘Python工程师标准>>> 1 窗口类 1.1 概述 CObject └CCmdTarget └CWnd CWnd是MFC窗口类的 基类,提供了微软基础类 ...

  7. QT和MFC中怎么使用继承基类的自定义控件放置在界面上

    1.Qt中自定义button继承于QPushButton,f2查看指定控件的声明定义,可以手动改ui.form.h文件里各个类型的控件指针变量,改成自己定义的" (这里ui.form.h在工 ...

  8. MFC中五个初始类的作用

    MFC中五个初始类的作用 https://blog.csdn.net/thisispan/article/details/7393401

  9. MFC中获取App,MainFrame,Doc和View类等指针的方法

    From: http://hi.baidu.com/wxnxs/item/156a68f5b3b4ed18e3e3bd03 MFC中获取App,MainFrame,Doc和View类等指针的方法 1  ...

最新文章

  1. ElasticSearch 被攻击勒索
  2. TCP三次握手,握的是啥?
  3. 零基础学HTML5和CSS3前端开发第一课
  4. CF思维联系–CodeForces - 225C. Barcode(二路动态规划)
  5. 数据结构基础:线性表学习笔记
  6. 自然数,实数,有理数,整数,分数,无理数
  7. YbtOJ#893-带权的图【高斯消元,结论】
  8. matlab简单分析短时傅里叶变换STFT
  9. 理光打印机如何设置邮件服务器,技术员帮您win10系统网络共享理光打印机的设置方法的操作办法...
  10. POJ 1755 Triathlon(半平面交)
  11. php java node 并发,Node、PHP、Java 和 Go 服务端 I/O 性能PK
  12. ENVI5.1中Landsat 8数据大气校正
  13. 可变临时邮箱,亲测可用,附使用教程
  14. 【开发工具】MySQL免安装版
  15. linux系统编程实训总结,linux实训总结与体会
  16. 后门攻击阅读笔记,Input-aware dynamic backdoor attack
  17. 对数正态分布随机数c语言,在python中从对数正态分布生成随机数
  18. 基于Spark实现电影点评系统用户行为分析—RDD篇(一)
  19. 日期函数之Dateadd、Datediff
  20. vim美化插件,让你的vim与众不同

热门文章

  1. html中百分比是怎样计算的,css 中的百分比计算方法
  2. 新闻稿传播才能达到更好的效果
  3. 图片大小怎么改小?两个超简单的方法教给大家
  4. Redmibook pro 15 开机报错No bootable device
  5. 【存储】cache memory、primary memory and secondary memory
  6. 服务器配置DNS辅助区域出错
  7. intel nuc 11 新机装win 10系统避坑指南
  8. (附源码)计算机毕业设计JavaJava毕设项目餐饮掌上设备点餐系统
  9. 【一文学会文件上传】SpringBoot+form表单实现文件上传
  10. 长尾理论的关键点 or 重要特征