Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Потоки ввода-вывода
В 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, если установлен какой-либо из битов ошибки.
|