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

Глава 11 функции ввода-вывода Текстовые и бинарные (двоичные) файлы

Язык C++ унаследовал от языка С библиотеку стандартных функций ввода-вывода. Функции ввода-вывода объявлены в заголовочном файле <stdio.h>. Операции ввода-вывода осуществляются с файлами. Файл может быть текстовым или бинарным (двоичным). Различие между ними заключается в том, что в текстовом файле последовательности символов разбиты на строки. Признаком кокца строки является пара символов CR (возврат каретки) и LF (перевод строки) или, что то же самое, - ' \r' + ' \n'. При вводе информации из текстового файла эта пара символов заменяется символом CR, при выводе, наоборот, - символ CR заменяется парой символов CR и LF. Бинарный (или двоичный) файл - это просто последовательность символов. Обычно двоичные файлы используются в том случае, если они являются источником информации, не предполагающей ее непосредственного представления человеку. При вводе и выводе информации в бинарные файлы никакого преобразования символов не производится.

Потоковый ввод-вывод. Стандартные потоки

Термин поток происходит из представления процесса ввода-вывода информации в файл в виде последовательности или потока байтов. Над потоком можно выполнять следующие операции:

• считывание блока данных из потока в оперативную память;

• запись блока данных из оперативной памяти в поток;

• обновление блока данных в потоке;

• считывание записи из потока;

• занесение записи в поток.

Все потоковые функции ввода-вывода обеспечивают буферизированный, форматированный или не форматированный ввод и вывод.

Когда начинается выполнение программы, автоматически открываются следующие потоки;

stdin - стандартное устройство ввода;

stdout - стандартное устройство вывода;

stderr - стандартное устройство сообщений об ошибках;

stdprn - стандартное устройство печати;

stdaux - стандартное вспомогательное устройство.

Все они называются стандартными (или предопределенными) потоками ввода-вывода. По умолчанию стандартным устройством ввода, вывода и сообщений об ошибках является пользовательский терминал. Поток стандартного устройства печати относится к принтеру, а поток стандартного вспомогательного устройства — к вспомогательному порту компьютера. По умолчанию при открытии все стандартные потоки, за исключением потоков stderr и stdaux, буферизуются.

В современных операционных системах клавиатура и дисплей рассматриваются как файлы (притом текстовые!), поскольку с клавиатуры может считываться информация в программу, а на дисплей - выводиться. При запуске программы на выполнение ей можно переназначить стандартное устройство ввода (клавиатуру) или стандартное устройство вывода (дисплей), назначив вместо этих устройств текстовый файл. При этом говорят, что происходит переадресация ввода или. соответственно, вывода. Для переназначения ввода используется символ "<", а для переназначения вывода - символ " >". Если выполняемая программа называется example. exe. следующая строка используется для переназначения ввода с клавиатуры на файл sample. dat:

example < sample.dat

Переназначение вывода с дисплея на вывод в файл осуществляется с помощью следующей строки:

example > output.dat

Наконец, следующая строка осуществляет одновременное переназначение ввода и вывода:

example < sample.dat > output.dat

Можно также осуществить соединение выходного потока одной программы с входным потоком другой. Это называется конвейерной пересылкой. Если имеются две выполнимые программы examplel и example2. то конвейерная пересылка между ними организуется с помощью символа вертикальной черты " |". Следующая строка организует конвейерную пересылку между examplel и example2:

examplel | example2

Организацию конвейерной пересылки обеспечит операционная система.

Соседние файлы в папке ЯзыкС++Глушаков