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

Карасев Н.И.

Методология объектно-ориентированного программирования

Обзорные лекции по курсу

Лекция 7. Потоковый Ввод-Вывод в языке С++

В языке С++ предусмотрены средства сохранения типов данных при вводе-выводе. Каждая операция ввода-вывода осущест­вляется способом, чувствительным к типу данных. Если для какого-то типа данных должным образом была определена функция ввода-вывода, то именно она автоматически вызывается для обработки этого типа данных. Если нет соответствия между типом реальных данных и функцией обработки этого типа данных, то компилятор обнаружит ошибку. Таким образом, несоответ­ствующие данные не могут проникнуть в систему (как может случиться в С, в котором есть лазейки, приводящие к возникновению неуловимых и странных ошибок).

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

Используйте неформатированный ввод-вывод для достижения максимальной эф­фективности при обработке файлов большого объема.

Содержание лекции:

1.Потоки

2. Вывод потоков

3. Ввод потоков

4. Неформатированный ввод - вывод

5. Манипуляторы потоков

6.Резюме

7. Упражнения для самопроверки

1. Потоки

В понятийном аппарате языка С++ Поток — это последовательность байтов. В операциях ввода байты пересылаются от устройства (например, от клавиатуры, дисковода или соединения сети) в оперативную память. При выводе байты пересылаются из оперативной па­мяти на устройства (например, на экран монитора, принтер, дисковод или в соединение сети).

Приложение связывает значение элемента данных с байтами данных. Байты данных могут представляться в виде символов в коде ASCII, в виде внутреннего формата сырых данных, в виде графического изображения, оцифрованной речи, цифрового видеоизображения или в виде любой другой информации, которая может потребоваться приложению.

Механизм ввода-вывода заключается в пересылке байтов данных от уст­ройств в оперативную память и обратно эффективным и надежным способом. Такая пересылка часто включает механические перемещения, например, вра­щение диска и ленты или нажатие клавиш клавиатуры. Время, затрачивае­мое на такие перемещения, обычно значительно превышает время, в течение которого процессор обрабатывает данные. Таким образом, операции ввода-вывода требуют тщательного планирования для достижении максимальной эффективности

Язык С++ предоставляет возможности для ввода-вывода как на «низ­ком», так и на «высоком» уровнях. Ввод-вывод на низком уровне – это не­форматированный ввод-вывод обычно сводится к тому, что некоторое число байтов данных просто следует переслать от устройства в память или из памяти в устройство. При такой пересылке каждый байт является самостоятельным элементом данных. Передача на низком уровне позволяет осуществлять пере­сылку больших по объему потоков ввода-вывода с высокой скоростью, но такая передача обычно неудобна для программиста.

Программисты предпочитают использовать операции ввода-вывода на высоком уровне, т.е. форматированный ввод-вывод, при котором байты группируются в такие элементы данных, как, например, целые числа, числа с плавающей запятой, символы, строки, а также данные типов, определенных пользователем. Такие ориентированные на типы возможности более удобны для большинства операций ввода-вывода, кроме обработки файлов очень большого объема.

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