Поняття файла

Під час розв’язання задач на комп’ютері часто виникає не­обхідність у використанні даних, які записані на зовнішніх носіях інформації (дисках) і оформлені у вигляді файлів даних. Незалежно від того, які дані містять фай­ли (числа, символи, рядки, масиви, структури тощо), в мо­ві С++ вони трактуються як потоки даних (stream),котрі явля­ють собою послідовність байтів, що зчитуються або записуються.

За замовчуванням у кожній програмі С++ можна користу­ватися такими стандартними потоками: стандартного введення (сіn), стандартного виведення (cout) та виведення помилок (сеrr). Щоб користуватися файлами, потоки повинні бути створені і за­кріплені за цими файлами. Використання файлів даних у про­грамі передбачає виконання таких операцій:

  • створення потоку обміну даними між файлом і пам’яттю комп’ютера;
  • зв’язування цього потоку з конкретним ім’ям файла на диску і відкриття файла;
  • запис даних у файл або читання їх з файла;
  • закриття файла.

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

  • ifstream — для створення потоку читання даних;
  • ofstream — для створення потоку запису даних у файл;
  • fstream — використовується як для запису даних у файл, так і їх читання.

Конструктори — це спеціальні функції, які мають таке са­ме ім’я, що й ім’я класу. Вони записуються як з параметрами, так і без параметрів. Конструктори з параметрами одночасно створюють відповідний потік, зв’язують його з файлом на дис­ку, відкривають файл для роботи і мають такі форми запису:

ofstream іп (“іф”, ios::out); або ofstream (“іф”);

ifstream іп (“іф”, ios::in); або ifstream (” “);

fstream іп (“іф”, ios::in | ios::out);

де іп — ім’я потоку, який створюється для роботи з файлом;іф — константа або змінна типу char[ ], її значення — ім’я файла на диску.

Перший з конструкторів використовується для запису да­них у файл, другий — для читання даних з файла, а третій — як для запису, так і для читання даних, наприклад:

ofstream fout( “myfile.dat”, ios::out);

Цей запис створює потік з ім’ям fout, зв’язує його з фай­лом на диску, який має ім’яmyfile.dat і відкриває цей файл для запису даних. Файл myfile.dat буде створено у тому ж ка­талозі, що і програма. Якщо треба створити файл у другому місці, то для запису його імені треба вказати шлях, наприклад, a:\\pvp\\myfile.dat. Тепер цей файл буде записано на диску а: в каталозі pvp.

Зверніть увагу на те, що для запису шляху треба викорис­товувати подвійні зворотні косі риски.

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

ofstream іп;

ifstream іп;

fstream іп;

де іп — ім’я відповідного потоку, тоді для зв’язування потоку з ім’ям файла на диску і відкриття його для роботи треба додат­ково використовувати функцію-член відповідного класу, тобто:

іn.ореn(“іф”, ios :: режим | ios :: режим);

Наприклад, відкриття файла для запису до нього даних ма­тиме вигляд:

ofstream fout;

fout.open ( “a:\\pvp\\my file.dat”, ios::out);

Конструктори як з параметрами, так і без них, виконують однакову роботу, тому яким з них надати перевагу — справа користувача.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *