Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
алгоритмизации.docx
Скачиваний:
7
Добавлен:
16.12.2018
Размер:
82.12 Кб
Скачать

17. Форматированный вывод на экран. Форматированный ввод с клавиатуры

Для организации ввода-вывода в Си++ можно использовать средства языка Си (conio. h). Однако в Си++ существует стандартная библиотека классов, ориентированная на организацию потокового ввода-вывода. Классы ввода-вывода образуют иерархию по принципу наследования. Базовым в этой иерархии является класс io s (исключение составляют лишь классы буферизированных потоков). В классе ios объединены базовые данные и методы для ввода-вывода. Прямыми потомками класса ios являются классы istream и ostream. Класс istream — это класс входных потоков; ostream — класс выходных потоков. Потомком этих двух классов является iostream — класс двунаправленных потоков ввода-вывода. С этим классом мы уже много раз имели дело, подключая его к программам с помощью головного файла iostream.h .Объект cout принадлежит к классу ostream и представляет собой поток вывода, связанный с дисплеем. Объект cin принадлежит классу istream и является потоком ввода, связанным с клавиатурой. Оба эти объекта наследуются классом iostream. Знак << обозначает перегруженную операцию вставки символов в поток вывода cout , a >> — знак операции извлечения из потока ввода cin. Для организации форматированного потокового ввода-вывода в Си++ существуют два средства:

• применение функций-членов класса ios для управления фла­гами форматирования;

• применение функций-манипуляторов.

18. Потоковый ввод – вывод в C++

Библиотека потоков C++ предоставляет набор классов для управления вводом-выводом. Непосредственно в язык C++ (как и в язык Си) средства ввода-вывода не входят. В программах часто используется препроцессорная директива

#include <iostream.h>

Назначение указанного в директиве заголовочного файла — связать компилируемую программу с одной из основных частей библиотеки ввода-вывода, построенной на основе механизма классов. Эта библиотека почти стандартная, так как включена практически во все компиляторы C++. Однако о стандарте здесь можно говорить только неформально: библиотека создана после появления языка. Она разрабатывалась в некотором смыс­ле независимо от создания языка, не входит в формальное опи­сание языка и написана на языке C++.

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

Библиотека обеспечивает программиста механизмами для извлечения данных из потоков и для помещения данных в пото­ки. Каждый поток (за исключением строковых) ассоциируется при помощи операционной системы с определенным внешним устройством. При обмене с потоком используется вспомогатель­ный участок памяти, называемый буфером потока. При вводе данных они сначала помещаются в буфер и только затем переда­ются выполняемой программе. При выводе — данные заполня­ют буфер перед передачей внешнему устройству. Заполнение и очистку буферов операционная система выполняет без явного участия программиста, поэтому поток в прикладной программе можно рассматривать как последовательность байтов, не зави­сящую от конкретных устройств, с которыми ведется обмен данными.

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

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

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

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

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

В соответствии с особенностями обслуживаемого устройст­ва потоки принято делить на следующие группы:

· стандартные, для передачи данных от клавиатуры и к дис­плею (во всех предыдущих программах использовались по­токи данной группы);

· файловые, при размещении данных на внешнем носителе (например, диск, магнитная лента);

· строковые, позволяющие размещать данные потока в памяти (символьный массив или строка) и пользоваться при этом всеми средствами, предоставляемыми библиотекой потоков (например, форматный ввод-вывод данных).