|
|||||||||||||||||||||||||||
Потоки ввода-вывода2.2 Потоки ввода-вывода В C++ существует несколько классов потоков: · Класс streambuf управляет буфером потока, обеспечивая базовые операции заполнения, опорожнения, сброса и прочих манипуляций с буфером. · Класс ios является базовым классом потоков ввода-вывода. · Классы istream и ostream – производные от ios и обеспечивают работу потоков соответственно ввода и вывода. · Класс iostream является производным от двух предыдущих и предусматривает функции, как для ввода, так и для вывода. · Классы ifstream, ofstream и fstream предназначены для управления файловым вводом-выводом. · Классы istrstream и ostrstream управляют резидентными потоками (форматированием строк в памяти). Для работы с потоками необходимо подключить заголовочный файл <iostream>. Кроме того, может потребоваться подключить файлы <fstream> (файловый ввод-вывод), <iomanip> (параметризованные манипуляторы) и <strstream> (форматирование в памяти). Библиотека ввода-вывода C++ предусматривает четыре предопределенных объекта-потока, связанных со стандартными входным и выходным устройствами. Таблица 11.1 Предопределенные объекты-потоки C++
Основными классами ввода-вывода C++ являются istream и ostream. Первый из них перегружает операцию правого сдвига (>>), которая служит в нем для ввода данных и называется операцией извлечения из потока. Класс ostream перегружает соответственно операцию левого сдвига (<<); она применяется для вывода и называется операцией передачи в поток. Библиотека ввода-вывода предусматривает три способа форматирования: посредством вызова форматирующих функций-элементов, с помощью манипуляторов или путем установки или сброса флагов потока. Подробней форматирование ввода-вывода рассмотрено в лабораторной работе №2. Состояние объекта класса ios (и производных от него) содержится в его закрытом элементе _state в виде набора битов (Таблица 11.2). Таблица 11.2 биты состояния потока
Для опроса или изменения состояния потока в классе ios имеется ряд функций и операций. · int rdstate(); Возвращает текущее состояние. · bool eof(); Возвращает true, если установлен eofbit. · bool good(); Возвращает true, если не установлен ни один из битов ошибки. · bool fail(); Возвращает true, если установлен failbit или badbit. · bool bad(); Возвращает true, если установлен badbit. · void clear(int = 0); Сбрасывает биты ошибки (по умолчанию) или устанавливает состояние потока в соответствии с аргументом. · void setstate(int); Устанавливает состояние битов ошибки с соответствии с аргументом. · operator void*(); Возвращает нулевой указатель, если установлен какой-либо из битов ошибки. · bool operator!(); Возвращает true, если установлен какой-либо из битов ошибки.
|
|||||||||||||||||||||||||||
|