Методичні вказівки до виконання практичних та лабораторних робіт з курсу «Обчислювальна техніка та програмування», страница 23

28.У довільно узятій пропозиції виділити слова, що містять заданий у діалозі символ.

6 ЗАПРОВАДЖЕННЯ /ВИСНОВОК ІНФОРМАЦІЇ 

          6.1 Мета роботи

Вивчити й освоїти засоби запровадження/висновку засобами мови C.

        6.2 Підготовка до роботи

                    Просте запровадження/висновок у файл 

       Клас ofstream  успадковує  операції  вставки  від  ostream,  а  ifstream успадковує операції витягу від istream.  Вони також забезпечують конструктори й функції-компоненти для створення  файлів  і опрацювання запровадження висновку в цей файл.  Варто включати fstream.h   в усі програми, де використовуються ці  файли.   Роздивимося  такий приклад, у якому файл FILE_FROM копіюється в FILE_TO:

     #include fstream. h

     ...

     char ch;

     ifstream f1("file_from");

     if (! f1) errmsg("Cannot open 'file_from' for input");

     ofstream f2("file_to");

     if (! f2) errmsg("Cannot open 'file_to' for output");

     while ( f2 && f1. get(ch) ) f2. put(ch);

       Помилки, пов'язані з потоками, докладно обговорюються нижче.

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

       Конструктори дозволяють оголосити потік файлу без завдання  іменованого файлу.  Потім ви можете асоціювати даний потік  файлу  з конкретним файлом:

     ofstream ofile;          // створення вихідного потоку файлу 

     ...

     ofile. open("payroll");   // потік ofile асоціюється з файлом payroll

                                          // робота з деяким паролем 

     ofile. close();           // payroll закривається 

     ofile. open("employee");  // потік ofile можна використувати повторно 

       За умовчанням файли відкривають у текстовому режимі.  Це  означає, що на запровадженні  послідовність  повернення  каретки/перекладу рядка перетвориться в символ '\n'.  На висновку символ '\n' перетвориться в послідовність повернення каретки/переклад рядка.  У двійковому режимі такі перетворення не виконуються.

       Функція компонента ofstream::open об'являється в такий спосіб:

     void open(char * name, int=ios::out, int prot=filуbuf::openprot); 

       Аналогічно, оголошення ifstream::open має вид:

     void open(char * name, int=ios::in, int prot=filуbuf::openprot); 

       Другий аргумент, названий режимом відкриття, має  показані значення.  Аргумент режиму відкриття (можливо, пов'язаний  операцією АБО з декількома бітами режиму) можна явно задати в такій формі:

Біт режиму

 Дія  

 ios::app 

 Додавання даних - запис завжди в кінець файлу 

  ios::ate             

 Пошук кінця файлу після початкового відкриття 

 ios::in              

Відкриття на запровадження (припускається для ifstream) 

  ios::out

Відкриття на висновок (припускається для ofstream) 

   ios::trunc

 Знищення вмісту у випадку, якщо файл існує  (припускається, якщо ios::out задано, і  ні ios::ate, ні ios::app не задані) 

ios::nocreate    

   Якщо файл не існує, те open дає помилку 

 ios::noreplace     

 Якщо файл існує, open для файлів висновку дає  помилку, якщо не встановлені ate або app