КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Робота з текстовими та бінарними файлами
Файли бувають двох типів: текстовими та бінарними (binary). Доступ до інформації у файлах довільний, тобто звертання до файлів може здійснюватись в будь-якому порядку. Відкриття і закриття файлів Для відкриття використовується функція-член open() з одним з об’єктів файлових потоків. Для закриття файлів використовується функція-член close(): Формат:
fs_obj.open(file_name, access); fs_obj. close(); fs_obj – об’єкт, що являє собою файл. file_name – рядок (або вказівка на рядок); може бути зазначений весь маршрут. access – являє собою будь-яке значення з таблиці можливих режимів доступу (табл. 11.1) або комбінацію з використанням оператора АБО(|)
Таблиця 11.1 Можливі режими доступу
Якщо ви відкриваєте файл для запису з опцією ios::out, C++ просто створює його. Якщо файл із цим ім’ям вже існує, C++ без усякого попередження перекриває старий файл, знищуючи його вміст. Якщо ви хочете, щоб спроба відкрити файл tt.txt завершилася відмовою, у випадку, якщо файл не існує, використовуйте:
cur_fs.open("tt.txt",ios::out | ios::nocreate)
Режим доступу до файлів по умовчанню – текстовий ASCII-файл. Бінарний режим доступу до файлів більш компактний, дані записуються в двійкових машинних кодах.
Скажімо
int i = 31764;
для ASCII - коду – це 5 символів, для двійкового машинного коду – це 2 байта. Якщо під час відкриття файла відбувається помилка, об’єкт файлового потоку буде дорівнювати нулю. Наприклад, якщо ви відкриваєте файл з опцією ios::nocreate і заданий файл не існує, С++ не відкриває цей файл. Виникнення помилки можна простежити у такий спосіб: if(! cur_fs) cout << "Файл не існує";
Рекомендації: Краще відкривати файли перед їхнім використанням і закривати відразу ж після використання. Запис у файл. Найбільш розповсюдженні функції файлового введення-виведення: – get(); – put().
Приклади: Приклад 1.
#include <fstream> using namespace std;
ofstream fp;
void main() { fp.open("nam.dat", ios::out);
fp<< "Петров Сергій\n"; fp<< "Сидоров Іван\n";
fp.close(); }
При перегляді файлу "nam.dat" отримаємо наступну інформацію
Петров Сергій Сидоров Іван
Приклад 2. Запис у файл цифр від 1 до 100
#include <iostream> #include <fstream> using namespace std;
ofstream fp;
void main() { int i; // Створення нового файла fp.open("nam.dat", ios::out);
if(!fp) cout << "Помилка відкриття файла\n"; else { for(i = 1; i < 101; i++) fp << i << " "; } fp.close(); } Виведення на принтер. Принтер, також як і екран, можна розглядати як аналогію з файлом. Приклад:
#include <fstream> using namespace std;
ofstream prn;
void main() { prn.open("LPT1",ios::out); prn << "Міша\n"; prn << "Петро\n"; prn.close(); }
Результат виконання програми:
Міша Петро Додавання у файл і читання з файла. Приклад. Додати 3 прізвища у файл, у котрому вже є 2 прізвища: Петров
|