ЧТО ЖЕ ТАКОЕ «ПОТОК» ? В реальной жизни мы говорим о водном потоке, автомобильном потоке, людском потоке и т. д. и т. п. При этом всегда подразумевается, что поток откуда-то берет свое начало, и где-то заканчивается, т. е. у него есть пункты выхода и входа. В языке С++ поток представляется как последовательность считываемых и записываемых байтов. Точно также у него есть точка выхода и точка входа (рис. 1). Рис. 1 В каждый момент для потока (байтов) определены позиции записи и/или чтения, и эти позиции после обмена перемещаются по потоку на длину переданной порции данных. На рис. 1 красная стрелка указывает на начало потока, а черная стрелка – на позицию после записи или чтения четырех байтов информации. Правда, ничего сложного ? ! Тогда идем дальше. И не оглядываемся назад! 1
ВХОДНОЙ И ВЫХОДНОЙ ПОТОК Если точкой выхода потока является прикладная программа, а точкой входа – внешние носители то поток является выходным (рис. 2). Рис. 2. Выходной поток Если точкой выхода потока являются внешние источники, а точкой входа – прикладная программа, то поток является входным (рис. 3). Рис. 3. Входной поток При обмене с потоком часто используется вспомогательный участок основной памяти - буфер потока (рис. 2 – буфер вывода, рис. 3 – буфер ввода). 2
УПРОЩЕННАЯ СХЕМА ИЕРАРХИИ БИБЛИОТЕКИ ПОТОКОВЫХ КЛАССОВ ios базовый потоковый istream входных потоков istrstream входных строковых потоков ifstream входных файловых потоков iostream двунаправленных потоков strstream двунаправленных строковых потоков fstream двунаправленных файловых потоков ostream выходных потоков constream консольных выходных потоков ostrstream выходных строковых потоков ofstream выходных файловых потоков Не пугайтесь! Честное слово, ничего страшного! 3
ПОДКЛЮЧЕНИЕ К ПРОГРАММЕ ПОТОКОВЫХ КЛАССОВ РАБОТЫ С ФАЙЛАМИ Чтобы воспользоваться потоковой библиотекой ввода-вывода, необходимо препроцессорной процедурой #include подключить к программе описание классов программы: ios, istream, Пример ostream, stream (рис. 4). Рис. 4 Потоки для работы с файлами создаются как объекты следующих классов: ifstream , ofstream , fstream (рис. 4). Чтобы использовать эти классы, в текст программы необходимо вставить препроцессорную процедуру #include . Файл iostream связывает программу с одной из основных частей библиотеки. Чтобы использовать файловые потоки в программу включен файл fstream. 4