[H-L-L.ru]

Форма входа

Меню сайта

Categories
1. Основы работы в среде C++ Builder.Основы языка Си++ [9]
2. Операторы ветвления и операторы передачи управления [4]
3. Операторы цикла и операторы передачи управления [5]
4. Одномерные массивы [3]
5. Многомерные массивы [3]
6. Указатели.Динамическое распределение памяти [6]
7. Отладка программы [3]
8. Функции [8]
9. Строки [5]
10. Функция Main [2]
11. Типы данных,определяемые пользователем [5]
12. Потоки ввода/вывода [7]
13. Основы объектно-ориентированного программирования [5]
Приложения [11]

Главная » Статьи » Лекции по C++ » 12. Потоки ввода/вывода

1. Потоки ввода-вывода

Ввод/вывод на самом низком уровне интерпретируется как передача последовательности байтов между объектами. Эта последовательность байтов называется потоком. На этом уровне понятие типа данных отсутствует. В языке С++ управление потоками осуществляется с помощью функций библиотеки ввода/вывода, унаследованной от С и объявленной в заголовочном файле stdio.h или cstdio, или с помощью операторов потока ввода/вывода. К преимуществам первого способа относится возможность более гибкого управления форматированием и его полная совместимость с С. Используя операторы потока ввода/вывода, можно не задумываться о форматах вывода информации, если это не имеет принципиального значения. Кроме того, этот метод позволяет переопределить форму вывода для любого класса. Однако, одновременное использование библиотеки stdio.h и операторов потока ввода/вывода не желательно. Если без этого обойтись нельзя, то необходимо вызвать функцию sync_with_stdio().

На пользовательском уровне информацию из потока необходимо преобразовать к различным типам данных. Это так же осуществляется с помощью функций библиотеки stdio.h или с помощью операторов потока ввода/вывода.

Используемые в программах потоки логически делятся на три типа:

-     входные, из которых читается информация;

-     выходные, в которые вводятся данные,

-     двунаправленные, допускающие как чтение, так и запись.

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

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

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

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

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

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

Все потоки ввода/вывода последовательные, т.е. в каждый момент времени для потока определены позиции записи и ( или ) чтения, и эти позиции после обмена перемещаются по потоку на длину переданной порции данных.

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

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

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



Источник: потоки ввода-вывода c++ последовательные бинарный файл текстовый

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Полная версия сайта