Объектно-ориентированный ввод-вывод в языке C++
Объектно-ориентированный ввод-вывод в языке C++ |
561 |
В буфер потока помещаются выводимые программой данные перед тем, как они будут переданы внешнему устройству. При вводе данных они вначале заносятся в буфер и лишь затем передаются в область памяти выполняемой программы. Использование буфера как промежуточной ступени при обменах с устройствами ввода-вывода повышает скорость передачи данных, поскольку реальные пересылки осуществляются при заполнении (на выводе) или опустошении буфера (на вводе). Большую часть работы, связанной с заполнением и очисткой буферов ввода- вывода, берет на себя операционная система и выполняет ее без явного участия программиста. Поэтому поток в программе можно рассматривать просто как последовательность байтов. Важно отметить, что никакой связи значений этих байтов с кодами определенного алфавита не предусматривается. Задача программиста при вводе-выводе с помощью потоков — установить соответствие между объекта- ми-участниками обмена и последовательностью байтов потока, в которой могут отсутствовать сведения о типах представляемых (передаваемых) данных. Используемые в программах потоки делятся на три категории: ? входные, из которых читаются данные; ? выходные, в которые вводятся данные; ? двунаправленные, допускающие как чтение, так и запись. Все потоки ввода-вывода имеют последовательную структуру, то есть в каждый момент для потока определены позиции записи и/или чтения, и эти позиции после обмена перемещаются по потоку на длину переданной порции данных. В соответствии с особенностями устройства ввода-вывода, к которому «присоединен» поток, различают стандартные, строковые и файловые потоки. Стандартные потоки соответствуют передаче данных от клавиатуры и к экрану дисплея. Стандартным устройством ввода считается клавиатура, а стандартным устройством вывода — экран дисплея. Строковый поток состоит из символов, в совокупности образующих символьный массив (строку) в основной памяти. Файловый поток несет в себе символы, которые размещаются на внешнем носителе данных компьютера (например, на магнитном или оптическом диске). Обсудим принципиальные особенности потоковой библиотеки ввода-вывода языка С++. |