Библиотека потоков С++ (библиотека iostream) представляет набор классов для управления вводом/выводом. Эти классы имеют несколько преимуществ по сравнению с традиционными средствами ввода/вывода (i/o):
· Надежность. Семейства функций printf и scanf не предусматривают никакой проверки типа. Компилятор не может сигнализировать о несоответствии спецификаций формата передаваемым аргументам. Механизм потоков С++ основывается на перегрузке функций (операций), что обеспечивает для каждого типа передаваемых данных вызов соответствующей функции.
· Расширяемость. Применение процедур С ограничено файловыми потоками (и некоторыми устройствами, доступ к которым возможен как к предопределенным потокам). Эти процедуры допускают расширения. Классы С++, благодаря полиморфизму, позволяют одним и тем же процедурам работать с потоками различных типов. Например, тот же интерфейс, что используется стандартным вводом/выводом, применим к файловым и резидентным потокам. Можно предусмотреть собственные перегруженные функции, которые позволят библиотеке потоков С++ работать с определяемыми пользователем типами.
· Простота и последовательность. Широкое использование перегруженных функций позволяет библиотеке потоков поддерживать единообразный интерфейс ввода/вывода. Это приводит к более простому и понятному синтаксису.
23.2 Заголовочные файлы
Чтобы обеспечить программе доступ к библиотекам потоков С++, нужно включить в нее заголовочный файл iostream.h. При файловом вводе/выводе следует включить также fstream.h и iomanip.h (манипуляторы).
23.3 Предопределенные объекты-потоки
Библиотека iostream имеет четыре предопределенных объекта-потока. Они ассоциированы со стандартным вводом/выводом. Эти объекты описаны в следующей таблице.
Имя |
Тип класса |
Описание |
cin |
istream_withassign |
Ассоциируется со стандартным вводом (т.е. клавиатурой) |
cout |
ostream_withassign |
Ассоциируется со стандартным выводом (т.е. экраном) |
cerr |
ostream_withassign |
Ассоциируется со стандартным устройством для вывода ошибок (т.е. экраном) с небуферизованным выводом |
clog |
ostream_withassign |
Ассоциируется со стандартным устройством для вывода ошибок (т.е. экраном) с буферизованным выводом |
23.4 Операции помещения и извлечения
Библиотека потоков С++ предусматривает два основных класса для ввода и вывода: соответственно istream и ostream. Класс ostream использует для вывода операцию левого сдвига(<<). Если эта операция применяется к объектам-потокам, ее называют операцией помещения (в поток). Следующий пример выводит приветствие, применяя операцию помещения к предопределенному объекту cout.
#include <iostream.h>
void main()
{
cout<<"Всем привет!" <<'\n';
}
После приветствия стоит символ перевода на новую строку '\n'.
Класс iostream использует для ввода операцию правого сдвига (>>). В таком контексте ее часто называют операцией извлечения (из потока). Следующий пример применяет операцию извлечения к предопределенному объекту cin.
#include <iostream.h>
void main()
{
char name [20]];
cout<<"Введите имя";
cin >>name;
}
Классы istream и ostream перегружают соответственно операции извлечения и помещения для всех встроенных типов. Такая перегрузка позволяет использовать единообразный синтаксис для ввода/вывода символов, строк, целых и вещественных типов.
Кроме того, перегруженные операции << и >> возвращают ссылку на объект (return*this) соответствующего типа. Это позволяет последовательно соединять несколько операций, т.е. реализовать сцепление вызовов операций ввода/вывода.
Например:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.