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 超载。 Open 设计用于与默认 CStdioFile 构造函数一起使用(重写 CFile::Open)。 |
2 | ReadString 读取单行文本。 |
3 | Seek 定位当前文件指针。 |
4 | WriteString 写入一行文本。 |
让我们通过创建一个新的基于 MFC 对话框的应用程序来再次研究一个简单的示例。
步骤 1 − 拖动一个编辑控件和两个按钮,如下图所示。
步骤 2 − 添加值变量m_strEditCtrl用于编辑控件。
步骤 3 − 为"打开"和"保存"按钮添加单击事件处理程序。
步骤 4 − 这是事件处理程序的实现。
void CMFCStandardIODlg::OnBnClickedButtonOpen() { // TODO:在此处添加您的控件通知处理程序代码 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:在此处添加您的控件通知处理程序代码 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 − 首先打开文件、读取文件,然后更新编辑控件。