Перенаправлення потоків

Для пере направлення потоків використовується функція freopen(). Її можна використовувати для пере направлення стандартних потоків, що дуже корисно при відлагоджені програми, наприклад здійснюється виведення не на екран, а у файл.

FILE *f reopen (const char *имя_файлу, const char *режим, FILE *поток)

Параметр режим може мати такі ж самі значення як у функції fopen().

В наступному прикладі функція freopen() перенаправляє стандартний потік stdout у файл OUTPUT.

#include <stdio.h> int main(void) { char str[80];  
freopen("c:\\output.txt", "w", stdout);  
printf("Введіть символьний рядок: "); gets(str); printf(str); return 0; }  

Результат виконання

Результат запису потоку у файл


Робота з файлами у С++

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

Існує 3 основні класи для потоків:

ifstream використовується для роботи з файлами в режимі зчитування;

ofstream – в режимі запису;

fstream – запису та зчитування.

Оголошення змінних, що будуть пов’язані з відповідним потоком, відбувається наступним чином:

#include < fstream. h>

ifstream inf; – оголошена зміна inf для потоку в режимі запису;

ofstream outf; – оголошена зміна outf для потоку в режимі зчитування;

fstream iof; – оголошена зміна iof для потоку в режимі зчитування та запису.

Відкриття файлу здійснюється командою, що має наступну специфікацію:

<Змінна, що пов’язана з потоком>.open(<ім’я файла>,<режим роботи>, <режим доступу до файлу>);

По замовчувані усі файли відкриваються в текстовому режимі.

Файл може бути відкритий в одному з наступних режимів:

· ios::in — відкриття файлу в режимі зчитування даних, він є режимом по замовчуванні для потоку ifstream;

· ios::out — відкриття файлу в режимі запису даних (при цьому існуючий файл знищується), він є режимом по замовчуванню для потоку ofstream;

· ios::binary — відкриття файлу в двійковому (бінарному) режимі;

· ios::app — відкриття файлу в режимі запису даних в кінець файлу;

· ios::ate — перейти в кінець вже відкритого файлу;

· ios::trunc — очищує файл, це ж відбувається в режимі ios::out;

· ios::nocreate —забезпечує виконання операції тільки відкриття файлу тільки для існуючого файлу;

· ios::noreplace — не дозволяє відкривати існуючий файл.

Режими відкриття файлу є можливість об’єднувати знаком «и» («|»), наприклад при відкриті файлу для запису даних в бінарному (двійковому) режимі необхідно задани ios::out | ios::binary. Якщо параметр режиму доступу не вказано робота з потоком буде відбуватися по замовчуванні для цього потоку.

Режим доступу до файлу визначаються атрибутами типу int

Атрибут Значення
  Нормальний файл, відкритий доступ
  Файл тільки для зчитування
  Скритий файл
  Системний файл
  Архівний файл

При відкритті файлу файловій (потоковій) змінній присвоюється значення true, в іншому випадку false.

Закриття роботи з потоком здійснюється командою:

<потокова (файлова) зміна>.close();


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: