Передача потокового обробка файлів

Для роботи з файлами використовуються спеціальні типи даних, звані потоками.

Потік ifstream служить для роботи з файлами в режимі читання.

Потік ofstream служить для роботи з файлами в режимі запису.

Потік fstream служить для роботи з файлами в режимі, як читання, так і запису.

У програмах на C ++ при роботі з текстовими файлами в потоковому режимі необхідно підключати бібліотеки і .

С ++ підтримує всю систему введення / виведення С і додає до неї додаткові можливості, пов'язані в основному з введенням / висновком об'єктів. Опис засобів для створення потоків в С ++ представлено в заголовки . Коли починає працювати програма на мові С ++, відкриваються потоки, наведені в табл.5.

Таблиця 5. Потоки, які визначаються в мові С ++.

Ім'я стандартного файлу

Стандартний введення - клавіатура

Стандартний висновок - екран

Стандартна помилка - екран

Буферизованная версія cerr - екран

Основні алгоритми роботи з файлами

Для запису даних в файл потрібно виконати:

1. Описати зміну типу ofstream.

2. Відкрити файл для запису за допомогою функції open.

3. Вивести інформацію в файл за допомогою cout.

4. Обов'язково закрити файл.

Для читання даних з текстового файлу потрібно виконати:

1. Описати зміну типу ifstream.

2. Відкрити файл для читання за допомогою функції open.

3. Вважати інформацію з файлу за допомогою cin при зчитуванні кожної порції даних необхідно перевіряти, що читання можливо.

Опис потокової змінної

Для того щоб почати працювати з текстовим файлом, необхідно описати змінну типу ofstream.Напрімер, за допомогою оператора

буде створена змінна F для запису інформації в файл.

У загальному випадку оператор відкриття файлу буде мати вигляд:

де F- змінна, описана в нашому випадку як ofstream;

file- повне ім'я файлу на диску;

mode- режим роботи з відкриваються файлом.

Існують різні режими для відкриття файлу (див. Табл.6).

Таблиця 6. Режими роботи з потоком при його відкритті

Режими роботи з файлом при відкритті

Параметр mode може бути відсутнім, в цьому випадку файл відкривається в режимі за замовчуванням для даного потоку:

ios :: in- для потоків ifstream,

ios :: out- для потоків ofstream.

Після вдалого відкриття файлу (в будь-якому режимі) в змінної F буде зберігатися 1 (true), в іншому випадку 0 (false). Це дозволить перевіряти коректність операції відкриття файлу.

Якщо відкриття файлу завершилося невдачею, об'єкт, відповідний потоку, буде повертати значення 0:

Перевірити успішність відкриття файлу можна також за допомогою функції is_open (). Функція повертає 1, якщо потік вдалося зв'язати з відкритим файлом. наприклад,

if (! ofs.is_open ()) cout <<"Файл не открыт\n";

Відкрити файл в режимі запису можна одним з таких способів:

ofstream F; F.open ( "abc.txt", ios :: out);

Другий спосіб, режим ios :: out є режимом за замовчуванням для потоку ofstream

Третій спосіб об'єднує опис змінної типу потік і відкриття файлу в одному операторі.

ofstream F ( "abc.txt", ios :: out);

Після відкриття файлу в режимі запису, буде створено порожній файл, в який можна буде записувати інформацію. Якщо необхідно відкрити існуючий файл (при цьому зберегти його вміст), то в якості режиму слід використовувати значення ios :: app.

Після відкриття файлу в режимі запису, в нього можна писати точно так же, як і на екран, тільки замість стандартного пристрою виведення cout необхідно вказати ім'я відкритого для запису файлу.

Наприклад, для запису в потік F змінної a, оператор виведення матиме вигляд:

Для послідовного виведення в потік G змінних b, c і d оператор виведення стане таким:

G <

Читання з файлу виконується коректно до досягнення кінця файлу. Для перевірки, чи досягнуто кінець файлу, можна використовувати функцію

яка має прототип int eof () ;.

Ця функція повертає 0, якщо кінець файлу не досягнуть, і значення 1 при досягненні кінця файлу.

Відкриті на диску файли після закінчення роботи з ними рекомендується закрити. Оператор закриття файлу буде мати вигляд:

де F- змінна для записи інформації в файл.

Приклад 1. Робота з файлом в потоковому режимі.

При використанні бібліотеки класів С ++ операції відкриття, створення і закриття, виконуються при створенні об'єктів вихідного (вхідного) файлового потоку.

#include // ofstream

#include // містить функцію exit

// створюється файл, старий стирається

Схожі статті