Работа с файлами (окончание)

   
На этом шаге мы закончим рассмотрение связи потоков с файлами.

   
Все файловые классы унаследовали от базовых классов функцию close(), позволяющую очистить буфер потока, отсоединить поток от файла и закрыть файл.
Функцию close() необходимо явно вызывать при изменении режимов работы с файловым потоком. Автоматически эта функция вызывается только
при завершении программы.

   
В качестве иллюстрации основных особенностей работы с файлами рассмотрим несколько программ.

//OOР19_1.СРР - чтение текстового файла с помощью
//  операции >>.
#include <stdlib.h>     // Для функции exit().
#include <fstream.h>    // Для файловых потоков.
const int lenName = 13; // max длина имени файла. 
// Длина вспомогательного массива: 
const int lenString = 60; 
void main()
{ 
  char source[lenName]; // Массив для имени файла.
  cout << "\nВведите имя исходного файла: "; 
  cin >> source;
  ifstream inFile;      // Входной файловый поток.
  // Открыть файл source и связать его с потоком inFile: 
  inFile.open(source);
  if (!inFile)          // Проверить правильность открытия файла.
  { 
    cerr << "\nОшибка при открытии файла " << source;
    exit(1);            // Завершение программы.
  }
  // Вспомогательный массив для чтения: 
  char string[lenString]; 
  char next;
  cout << "\n Текст файла:\n\n";
  cin.get();            // Убирает код из потока cin.
  while(1)              // Неограниченный цикл.
  { // Ввод из файла одного слова до пробельного 
    // символа либо EOF: 
    inFile >> string; 
    // Проверка следующего символа: 
    next = inFile.peek();
    // Выход при достижении конца файла: 
    if (next == EOF) break;
    // Печать с добавлением разделительного пробела: 
    cout << string << " ";
    if (next == '\n')    // Обработка конца строки.
    {   
      cout << '\n';
      // 4  -  смещение для первой страницы экрана: 
      static int  i = 4;
      // Деление по страницам до 20 строк каждая: 
      if   (!(++i % 20))
      { 
        cout << "\nДля продолжения вывода " 
              "нажмите ENTER.\n"  << endl; 
        cin.get();
      }
    }
  }
}

Текст этой программы можно взять Предыдущий шаг
Содержание

Следующий шаг
-->



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий