Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Робота з текстовими та бінарними файлами




 

Файли бувають двох типів: текстовими та бінарними (binary).

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

Відкриття і закриття файлів

Для відкриття використовується функція-член open() з одним з об’єктів файлових потоків. Для закриття файлів використовується функція-член close():

Формат:

 

fs_obj.open(file_name, access);

fs_obj. close();

fs_obj – об’єкт, що являє собою файл.

file_name – рядок (або вказівка на рядок); може бути зазначений весь маршрут.

access – являє собою будь-яке значення з таблиці можливих режимів доступу (табл. 11.1) або комбінацію з використанням оператора АБО(|)

 

Таблиця 11.1

Можливі режими доступу

Режим Опис Код
ios::in Відкрити файл для читання
ios::out Відкрити файл для запису
ios::ate Відкрити файл і встановити вказівку на кінець
ios::app Відкрити файл для додавання
ios::trunc Видалити уміст файла
ios::nocreate Якщо немає файла, повертає відмову
ios::noreplace Якщо файл є, його відкриття тільки для додавання
ios::binary Відкрити файл у двоічному режимі

 

Якщо ви відкриваєте файл для запису з опцією 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 прізвища:

Петров


Поделиться:

Дата добавления: 2014-12-30; просмотров: 271; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты