
3_файловые_потоки.ppt
- Количество слайдов: 5
ФАЙЛОВЫЕ ПОТОКИ fstream 1
НАЗНАЧЕНИЕ ФАЙЛОВЫХ ПОТОКОВЫХ КЛАССОВ Например: ifstream - чтение данных из ifstream in. File; - в программе файла определяется объект – п о т о к Прикладная входной файловый поток программа ofstream файл Прикладная программа - запись данных в п о т о к Например: ofstream out. File; - в программе определяется объект – выходной файловый поток fstream - чтение и запись Например: fstream io. File; - в программе данных п о т о к Прикладная программа определяется объект – файловый поток для ввода и вывода Создание файлового потока ifstream in. File; Буфер связывает имя потока с ofstream out. File; ввода/ fstream io. File; вывода выделяемым для него буфером и инициализирует переменные 2
ОТКРЫТИЕ ФАЙЛА Открытие файла в самом общем смысле означает процедуру, информирующую программу о тех действиях, которые предполагается выполнять с файлом. Создав файловый поток, можно "присоединить" его к конкретному файлу с помощью компонентной функции open(): void open(const char *file. Name, int mode, int protection); где: file. Name – имя уже существующего или создаваемого файла; mode – флаги, определяющие режим работы с открываемым файлом (например, запись или чтение); protection – определяет защиту (используется редко). Пример программы #include
ОТКРЫТИЕ ФАЙЛА (использование конструкторов) В классах ifstream, ofstream, fstream определены конструкторы, позволяющие по иному выполнять создание и открытие файлов. При использовании средств библиотечных классов ввода-вывода, чаще всего употребляют конструктор без параметров и конструктор, в котором явно задано имя файла. Примеры обращений к конструкторам без параметров: ifstream fi; Создает входной файловый поток fi ofstream fo; Создает выходной файловый поток fo fstream ff; Создает файловый поток вводавывода ff Примеры обращений к конструкторам с указанием имени файла: ifstream flow 1(“file 1. txt”); ofstream flow 2(“file 2. txt”); fstream flow 3(“file 3. txt”); Создает входной файловый поток flow 1. Разыскивает файл file 1. txt, если файл не существует – аварийное завершение работы программы. Создает выходной файловый поток flow 2. Если файл file 2. txt не существует, он будет создан, открыт и соединен с потоком flow 2. Если файл уже существует, то предыдущий вариант будет удален и пустой файл создан заново. Создает файловый поток flow 3, открывает файл file 3. txt и присоединяет к потоку flow 3. 4
ОПЕРАЦИИ ЧТЕНИЯ И ЗАПИСИ ДАННЫХ В ПОТОК Основным достоинством использования классов ifstream, ofstream, fstream является возможность применять очень удобные операции обмена данными. Наша Таня громко плачет: п о т о к Уронила в речку мячик. Чтение данных из файла file. tx Прикладная - Тише, Танечка, не плачь: программа 1 вариант – операция взять из потока >> ifstream in. File; Из текстового файла file. txt в строковый массив str[50] char str[50]; считается слово «Наша» Не утонет в речке мяч. t 2 вариант – использование процедуры getline() ) ifstream in. File; Из текстового файла file. txt в строковый массив str[50] char str[50]; считаются 20 символов «Наша in. File. open(“file. tx (чтение от первого in. File. open(“file. txt”); Таня громко пла» , включая t”); непробельного символа до in. File. getline(str, 20); пробелы. in. File >> str; первого пробела). in. File. close(); Запись данных в файл п о т о к Наша Таня громко плачет: file. tx t 1 вариант – операция поместить в 2 вариант – использование процедуры поток << write() ) ofstream out. File; char str[50] = “Наша Таня громко плачет: ”; out. File. open(“file. txt”); out. File << str; out. File. close(); Прикладная программа out. File. open(“file. txt”); out. File. write(str, sizeof(str) ); out. File. close(); В текстовый файл file. txt записана строка «Наша Таня громко плачет» . 5