Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Загальна характеристика роботи з файламиСодержание книги
Поиск на нашем сайте
Ваша програма може одержати доступи до файлів двома засобами: послідовним і довільним. У програмі необхідно дізнатися, яким методом Ви збираєтеся користуватися при роботі з файлами. Доступ до інформації в послідовному файлі здійснюється в такому порядку, у якому робився запис. Таким чином, послідовний файл є аналогом магнітної стрічки на касеті: Ви відтворюєте музику в тому порядку, у якому вона була записана. (Ви можете швидко перемотати вперед або назад пісні, що не хочете слухати, але порядок цих пісень диктує Вам, що потрібно зробити, щоб послухати ту композицію, що Ви хочете.) Вставити дані в середину послідовного файла важко, а іноді практично неможливо. На відміну від послідовних файлів звертання до інформації у файлах із довільним доступом може здійснюватися в будь-якому порядку. Уявіть собі дані в модулі з довільним доступом, коли вибирається меню на компакт-диску або платівці: Ви можете безпосередньо запустити будь-яку комбінацію, не програючи або перемотуючи всі інші. Якщо Ви хочете спочатку послухати першу пісню, потім шосту і після цього четверту, то можете зробити це без особливих проблем.
Послідовні файли Відкриття і закриття файлів Для відкриття використовується функція-член open() з одним з об’єктів файлових потоків. Для закриття файлів використовується функція-член close(): Формат: fs_obj. open(file_name, access); fs_obj. close(); fs_obj – об’єкт, що являє собою файл. file_name – рядок (або вказівка на рядок); може бути зазначений весь маршрут. access – являє собою будь-яке значення з таблиці можливих режимів доступу (табл. 7.) або комбінацію з використанням оператора АБО (|) Таблиця 7 Можливі режими доступу
Якщо Ви відкриваєте файл для запису з опцією ios::out, C++ просто створює його. Якщо файл із цим ім’ям вже існує, C++ без усякого попередження перекриває старий, знищуючи його вміст. Якщо Ви хочете, щоб спроба відкрити файл tt. txt завершилася відмовою, у випадку, якщо файл не існує, використовуйте:
cur_fs. open(“tt. txt”,ios::out | ios::nocreate)
Режим доступу до файлів по умовчанню - текстовий ASCII-файл. Якщо заданий двоічний режим, він коротше, більш компактний, дані записуються в двоічному машинному уявленні. Скажімо
int i = 31764;
для ASCII - коду - це 5 символів, для двоічного машинного уявлення - це 2 байта. Цей файл може читатися в C++ і є системно залежним. На машині іншого типу може не читатися. Якщо під час відкриття файла відбувається помилка, об’єкт файлового потоку буде дорівнювати нулю. Наприклад: якщо Ви відкриваєте файл з опцією ios::nocreate і заданий файл не існує, С++ не відкриває цей файл. Виникнення помилки можна простежити у такий спосіб:
if(! cur_fs) cout << «FILE..... НЕМАЄ»;
Рекомендації: Краще відкривати файли перед їхнім використанням і закривати відразу ж після використання. Запис у файл. Найбільш розповсюдженні функції файлового введення-виведення: – get(); – put().
Приклади: Приклад 1.
#include <fstream.h> ofstream fp;
Void main() { fp.open(«nam.dat», ios::out);
fp<< «Петров Сергій \n»; fp<< «Сидоров Іван \n»;
fp.close(); }
Виконати команду DOS type nam. dat: Петров Сергій Сидоров Іван
Приклад 2. Запис у файл цифр від 1 до 100
#include <fstream.h> 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.h> ofstream prn;
Void main() { prn.open(«LTP1»,ios::out); prn << “Міша \n”; prn << “Петро \n”; prn.close(); }
Виведення: Міша Петро Додавання у файл і читання з файла. Приклад. Додати 3 прізвища у файл, у котрому вже є 2 прізвища: Петров Сидоров
#include <fstream.h> ofstream fp;
Void main() { fp.open(“name.dat”, ios::app); fp << “Козлов \n”; fp << “Ромін \n Кравенко \n”; fp.close(); } Якщо файл name. dat не існує, то створюється новий із трьома прізвищами. Приклад. Програма запитує в користувача ім’я файла і виводить його вміст на екран.
#include <fstream.h> #include <stdlib.h>
fstream fp;
Void main() { char filename[12]; char in_char; cout << «Введіть ім’я файла»; cin >> filename; fp.open(filename, ios::in); if(!fp) { cout << «\n Помилка, файл не відкривається \n»; exit(0); //Вихід із програми } while(fp.get(in_char)) cout << in_char; fp.close(); }
Приклад. Копіювання даних з одного файла в інший:
#include <fstream.h> #include <stdlib.h>
ifstream in_fp; ofstream out_fp;
Void main() { char in_char; char in_file[12]; char out_file[12]; cout << “Введіть ім’я файла ”; cin >> in_file;
cout << “Введіть ім’я файла “; cin >> out_file;
in_fp.open(in_file, ios::in); if(!in_fp) { cout << “\n\n** Does not exist**\n”; exit(0); } out_fp.open(in_file, ios::out); if(!out_fp) { cout << “\n\n** Error opening **\n”; exit(0); } cout << “\n Копіювання \n”; while(in_fp.get(in_char)) out_fp.put(in_char); out_fp.close(); in_fp.close(); }
|
|||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-10; просмотров: 127; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.21.237 (0.006 с.) |