MFC——标准I/O


MFC 库提供了自己的文件处理版本。这是通过名为 CStdioFile 的类完成的。CStdioFile 类派生自 CFile。它可以处理Unicode文本文件以及普通多字节文本文件的读写。

这是构造函数的列表,它可以初始化 CStdioFile 对象 -

CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);
CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags);
CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags, CAtlTransactionManager* pTM);

以下是 CStdioFile 中的方法列表 -

先生。 名称和描述
1

打开

超载。Open 设计用于与默认的 CStdioFile 构造函数一起使用(重写 CFile::Open)。

2

读字符串

读取单行文本。

3

寻找

定位当前文件指针。

4

写字符串

写入一行文本。

让我们通过创建一个新的基于 MFC 对话框的应用程序来再次研究一个简单的示例。

步骤 1 - 拖动一个编辑控件和两个按钮,如下图所示。

快照

步骤 2 - 添加值变量m_strEditCtrl用于编辑控件。

快照

步骤 3 - 为“打开”和“保存”按钮添加单击事件处理程序。

步骤 4 - 这是事件处理程序的实现。

void CMFCStandardIODlg::OnBnClickedButtonOpen() {
   
   // TODO: Add your control notification handler code here
   UpdateData(TRUE);

   CStdioFile file;
   file.Open(L"D:\\MFCDirectoryDEMO\\test.txt", CFile::modeRead | CFile::typeText);
   
   file.ReadString(m_strEditCtrl);
   file.Close();
   UpdateData(FALSE);
}

void CMFCStandardIODlg::OnBnClickedButtonSave() {
   
   // TODO: Add your control notification handler code here
   UpdateData(TRUE);
   CStdioFile file;
   if (m_strEditCtrl.GetLength() == 0) {

      AfxMessageBox(L"You must specify the text.");
      return;
   }
   file.Open(L"D:\\MFCDirectoryDEMO\\test.txt", CFile::modeCreate |
      CFile::modeWrite | CFile::typeText);
   file.WriteString(m_strEditCtrl);
   file.Close();
}

步骤 5 - 编译并执行上述代码后,您将看到以下输出。

快照

步骤 6 - 写一些内容并单击“保存”。它将把数据保存在 *.txt 文件中。

快照

步骤 7 - 如果您查看文件的位置,您将看到它包含 test.txt 文件。

快照

步骤 8 - 现在,关闭应用程序。运行相同的应用程序。单击“打开”时,会再次加载相同的文本。

步骤 9 - 首先打开文件,读取文件,然后更新编辑控件。