На этом шаге мы закончим рассмотрение связи потоков с файлами.
Все файловые классы унаследовали от базовых классов функцию 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(); } } } }
Текст этой программы можно взять Предыдущий шаг
Содержание
Следующий шаг
-->