Учебники

MFC — Стандартный ввод / вывод

Библиотека 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 —

Sr.No. Имя и описание
1

открыто

Перегруженные. Open предназначен для использования с конструктором CStdioFile по умолчанию (переопределяет CFile :: Open).

2

ReadString

Читает одну строку текста.

3

Искать

Позиционирует текущий указатель файла.

4

WriteString

Пишет одну строку текста.

открыто

Перегруженные. Open предназначен для использования с конструктором CStdioFile по умолчанию (переопределяет CFile :: Open).

ReadString

Читает одну строку текста.

Искать

Позиционирует текущий указатель файла.

WriteString

Пишет одну строку текста.

Давайте снова рассмотрим простой пример, создав новое диалоговое приложение 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 — Он начинается с открытия файла, чтения файла с последующим обновлением элемента управления редактирования.