Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
16.02.2016
Размер:
210.94 Кб
Скачать

1.1. Заголовочные файлы библиотеки потоков iostream

Библиотека потоков iostream предоставляет сотни возможностей для вы­полнения операций ввода-вывода. Интерфейс библиотеки разбит на несколько заголовочных файлов.

Большая часть программ на языке С++ включает заголовочный файл <iostream.h>, который содержит основные сведения, необходимые для всех операций с потокам ввода-вывода. Заголовочный файл <iostream.h> включает объ­екты cin, cout, cerr и clog, которые соответствуют стандартному потоку ввода, стандартному потоку вывода, небуферизованному и буферизованному стан­дартным потокам вывода сообщений об ошибках. Предусмотрены возможности как для форматированного ввода-вывода, так и для неформатированного.

Заголовочный файл <iomanip.h> содержит информацию, полезную для обработки форматированного ввода-вывода при помощи так называемых пара­метризованных манипуляторов потока.

Заголовочный файл <fstream.h> содержит важную информацию для про­ведения операций с файлами, обработка которых осуществляется под кон­тролем пользователя.

Заголовочный файл <strstream.h> содержит информацию, важную для выполнения форматированного ввода-вывода в память. Это похоже на об­работку файлов, но операции ввода-вывода проводятся с символьными мас­сивами, а не с файлами.

Заголовочный файл <stdiostream.h> включает нужные сведения для про­грамм, использующих для выполнения операций ввода-вывода сочетание сти­лей языков С и С++. При создании новых программ следует избегать для операций ввода-вывода стиля языка С. Но для программистов, которым не­обходимо модифицировать уже существующие программы, написанные на С, эта предоставляемая в С++ возможность сочетания двух стилей окажется полезной.

Программы на С++ могут содержать также другие библиотеки, связанные с вводом-выводом, в которых предусмотрены, например, такие специфические для системы возможности, как управление специализированными устройст­вами для ввода-вывода аудио- и видеоданных.

1.2. Классы и объекты потоков ввода-вывода

Библиотека iostream содержит много классов для обработки широкого спектра операций ввода-вывода.

 Класс istream поддерживает операции по вводу потоков.

Класс ostream поддерживает операции по выводу потоков.

Класс iostream поддерживает оба типа операций: ввод и вывод потоков.

Класс istream и класс ostream являются производными классами прямого наследования базового класса ios.

Класс iostream является производным клас­сом множественного наследования классов istream и ostream.

Перегрузка операций обеспечивает удобную запись операций ввода-вы­вода. Операция сдвига влево («) перегружена для обозначения вывода в поток и называется операцией поместить в поток. Операция сдвига вправо (») перегружена для обозначения ввода потока и называется операцией взять из потока. Эти операции применяются к объектам стандартных по­токов cin, cout, cerr и clog и обычно используются также с объектами потоков, тип которых определен пользователем.

Объект стандартного потока ввода cin класса istream, как принято го­ворить, «привязан» (или «присоединен») к стандартному устройству ввода, обычно к клавиатуре. Операция взять из потока, показанная в приведенном ниже операторе, означает, что значение целой переменной nic (если по­лагать, что переменная nic объявлена как целая типа int) должно быть введено из объекта cin в память: cin » nic;

Заметим, что операция взять из потока является «достаточно интеллек­туальной», чтобы определить тип используемых данных. Если переменная nic была должным образом объявлена, то не требуется никакой дополни­тельной информации для использования операции взять из потока (между прочим, в случае использования языка С такая информация требуется).

Объект стандартного потока вывода cout класса ostream, как принято говорить, «привязан» к стандартному устройству вывода, обычно к экрану монитора. Операция поместить в поток, показанная в приведенном ниже опе­раторе, означает, что значение целой переменной nic должно быть выведено из памяти на стандартное устройство вывода:

cout « nic;

Операция поместить в поток также автоматически определяет тип переменной nic (при условии, что она должным образом объявлена), а поэтому для использования операции поместить в поток никакой дополнительной информации не требуется.

Объект cerr класса ostream «привязан» к стандартному устройству вы­вода сообщений об ошибках. Выводимые потоки данных для объекта cerr являются небуферизованными. Это означает, что каждая операция поместить в cerr приводит к мгновенному появлению выводимых сообщений об ошиб­ках; в этих случаях пользователь своевременно и должным образом инфор­мируется о неполадках в системе.

Объект clog класса ostream «привязан» тоже к стандартному устройству вывода сообщений об ошибках. Выводимые потоки данных для объекта clog являются буферизованными. Это означает, что каждая операция поместить в clog может приводить к тому, что вывод хранится в буфере до тех пор, пока буфер полностью не заполнится или пока содержимое буфера не будет выведено принудительно.

При обработке файлов в С++ используются следующие классы:

  • класс ifstream, выполняющий операции ввода из файлов;

  • класс ofstream, выполняющий операции вывода в файлы;

  • класс fstream, предназначенный для операций ввода-вывода файлов.

Класс ifstream наследует классу istream, класс ofstream наследует классу ostream, а класс fstream — классу iostream. В большинстве систем в полной иерархии классов потоков ввода-вывода поддерживается еще мно­жество других классов, но и классы, приведенные выше, предоставляют ши­рокие возможности, достаточные большинству программистов. Более подроб­ные сведения об обработке файлов можно получить из справочного руководства по библиотекам классов С++ вашей системы.

Соседние файлы в папке ЛекцииКарасева