Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab11.doc
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
171.01 Кб
Скачать

8. Використання текстових файлів для введення

Текстовий файл – це послідовність ASCII-символів, розділена на стрічки. Кожна попередня стрічка закінчується символом переходу на нову стрічку. Класи файлових потоків оснащений функціями для відкриття і закриття файлів, читання і запису стрічок тексту і виконання багатьох інших дій. В прикладі 4 показано, як відкрити файл, перевірити на помилки і вивести його вміст на дисплей.

Приклад 4. Читання і перевірка файлу на помилки

#include <iostream.h>

#include <fstream.h>

void main()

{

//відкриття існуючого файлу

ifstream help_file(“\\BC45\\README.TXT” );

//перевірка на помилки при відкритті файлу

if(!help_file)

{

cout << “\nCouldn’t open file \\BC45\\README”;

return;

}

//відображення вмісту файлу

while(help_file)

{

char buffer[100];

help_file.getline(buffer, sizeof(buffer));

cout << “\n” << buffer;

}

}

9.Виведення текстових файлів

Записувати файли майже так само легко, як і читати. Виникає невелика складність при відкритті файлу в режимі виводу, коли потрібно точно знати, як буде записуватися файл. По замовчуванню існуючий файл (в момент відкриття) врізається до нуля, але таку поведінку можна змінити. В прикладі 5 відкривається файл README.TXT, і його перші чотири стрічки копіюються в новий файл COPY.

Приклад 5. Проста програма запису в потік текстового файлу

#include <iostream.h>

#include <fstream.h>

void main()

{

//відкриття вже існуючого файлу

ifstream help_file(“\\BC45\\README.TXT”);

//відкриття файлу і його урізання до нуля

ofstream copy_file(“COPY”);

//перевірка на помилки відкриття

if(!help_file)

{

cout << “\nCouldn’t open file \\BC45\\README”;

return;

}

if(!copy_file)

{

cout << “\nCouldn’t open file COPY”;

return;

}

//копіювання перших чотирьох стрічок файлу README

while(help_file && copy_file)

{

char buffer[80];

help_file.getline(buffer, sizeof(buffer));

copy_file << buffer << “\n”;

if(++line_count == 4)

break;

}

}

Оператор

copy_file << buffer << “\n”;

записує у файл стрічку, що закінчується нулем, а потім додає символ нової стрічки так, щоб файл можна було читати за допомогою стандартного механізму вилучення стрічок. В файли виводу можна писати окремі символи і інші вбудовані типи даних, наприклад:

char c;

char* cp;

int i;

long l;

float f;

double d;

copy_file << c << cp << i << l << f << d;

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

//відкриття вивідного файлу в режимі додавання в кінець

ofstream copy_file(“COPY”, ios::app);

10. Читання бінарних файлів

Дані в бінарних файлах не мають ніяких роздільників і спеціальних символів. Це також стосується символу ‘\0’. Таким чином, стрічки в бінарному файлі не закінчуються нульовим символом. Фактично самі стрічки в бінарному фалі не мають ніякого смислу. Бінарні файли потрібно обробляти не так, як текстові: в них немає службових символів, їх дані не організовані в стрічки з позначенням кінця кожної стрічки і серед даних можуть бути будь-які восьмибітові значення. Тим не менше, робота з бінарними файлами досить проста. Відкриття і закриття їх здійснюється точно так само, як і текстових файлів, за виключенням того, що в функцію відкриття передається флаг ios::binary. Цілком можливе відкриття текстового файлу в бінарному режимі. Нижче приведено відповідний приклад 6.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]