Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать
  1. Зчитування та запис текстових файлів

Найпростіше зчитувати дані з текстового файлу або записувати їх до нього за допомогою операторів "«" і "»". Наприклад, у наведеному нижче коді програми здійснюється спочатку запис у файл test цілого числа, потім значення з плинною крапкою і на завершення текстового рядка.

Код програми 9.11. Демонстрація механізму запису даних у файл #include <iostream> // Для потокового введення-виведення

#include <fstream> // Для роботи з файлами

using namespace std; // Використання стандартного простору імен

int mainO

{

ofstream outftest"); if(!out) {

cout«"He вдається відкрити файл" « endl; return 1;

}

out « 10 «"" « 123.23 « endl; out «"Це короткий текстовий файл.";

out.closeO; getchO; return 0;

}

Наведений нижче код програми зчитує ціле число, float-значення, символ і ря­док з файлу, створеного у процесі виконання попередньою програмою:

Код програми 9.12. Демонстрація механізму зчитування даних з файлу #include <iostream> // Для потокового введення-виведення

#include <fstream> // Для роботи з файлами

using namespace std; // Використання стандартного простору імен

int mainO

{

char ch; int c; float f; char str[80];

ifstream inftest"); if(!in){

cout«"He вдається відкрити файл" « endl; return 1;

}

in » c; in »f; in » ch; in » str;

cout« c «"" «f«"" « ch « endl; cout« str;

in.closeO; getchO; return 0;

}

Вартоа нати! При використанні перевизначеного оператора "»" для зчи­тування даних з текстових файлів відбувається перетворення деяких симво­лів. Наприклад, "пропускні" символи опускаються. Якщо необхідно запобігти будь-яким перетворенням символів, то потрібно відкрити файл у двійковому режимі доступу до його даних.

Нео! хідноапам ятати! При використанні перевизначеного оператора "»" для зчитування рядка введення даних припиняється внаслідок виявлення пер­шого "пропускного" символу.

  1. Неформатне введення-виведення даних у двійковому режимі

Форматні текстові файли (подібні до тих, які використовувалися у поперед­ніх прикладах) корисні в багатьох ситуаціях, але вони не мають гнучкості нефор- матних двійкових файлів. Тому мова програмування C++ підтримує ряд функцій файлового введення-виведення у двійковому режимі, які можуть виконувати опе­рації без форматування даних.

Для виконання двійкових операцій файлового введення-виведення необхідно відкрити файл з використанням специфікатора режиму ios::binary. Необхідно від­значити, що функції, які використовуються для оброблення неформатних файлів, можуть також виконувати дії з файлами, відкритими в текстовому режимі досту­пу, але при цьому використовується перетворення символів, яке зводить нанівець основну мету виконання двійкових файлових операцій.

Функція get() зчитує символ з файлу, а функція put() записує символ у файл.

У загальному випадку існує два способи запису неформатних двійкових да­них у файл і зчитування їх з файлу. Перший спосіб полягає у використанні фун- кції-члена класу put() (для запису байта у файл) і функції-члена класу get() (для зчитування байта з файлу). Другий спосіб передбачає застосування "блокових" С++-функцій введення-виведення readO і writeO- Розглянемо кожен спосіб окремо.

Функції get() і put() мають багато форматів, але найчастіше використовуються такі їх версії:

istream &get(char &ch); ostream &put(char ch)\

  1. Функція get() зчитує один символ з відповідного потоку і поміщає його значення у змінну ch. Вона повертає посилання на потік, що пов'язаний із заздалегідь від­критим файлом. Досягнувши кінця цього файлу, значення посилання дорівнюва­тиме нулю.

  2. Функція put() записує символ ch у потік і повертає посилання на цей потік.

У процесі виконання наведеної нижче програми на екран буде виведено вміст будь-якого заданого файлу. Тут використовується функція get().

Код програми 9.13. Демонстрація механізму відображення вмісту файлу за допомогою функції get()

#include <iostream> // Для потокового введення-виведення

#include <fstream> // Для роботи з файлами

using namespace std; // Використання стандартного простору імен int main(int arge, char *argv[])

{

char ch; if(argc !=2) {

cout«"Застосування: ім'я_програми <ім'я_файлу>" « endl; return 1;

}