В библиотеке ввода/вывода основным инструментом является поток байтов. При вводе программа читает байты из потока ввода, при выводе записывает байты в поток вывода. Понятие потока позволяет абстрагироваться от того, с каким устройством ввода/вывода работает программа. Реализация потоков осуществляется через буфер – специальную область оперативной памяти. Для организации консольного ввода/вывода, т.е. ввода с клавиатуры и вывода на экран, создана библиотека iostream. В ней определены классы для поддержки работы с потоками и два основных объекта, которые обеспечивают стандартный ввод/вывод: cin – стандартный поток ввода (объект класса istream); cout – стандартный поток вывода (объект класса ostream); Форматированный ввод/вывод реализуется через две операции: операция вывода (вставки, помещения, включения) в поток "<<" и операция ввода (извлечения) из потока ">>".
Файловый ввод/вывод. Для поддержки файлового ввода/вывода на основе потоков используются классы библиотеки fstream: ifstream – класс, с помощью которого осуществляется чтение из файла; ofstream – класс, с помощью которого осуществляется запись в файл; fstream – класс, с помощью которого осуществляется чтение и запись в файл. Эти классы становятся доступными в программе при наличии директивы #include <fstream>. Работа с файлами предполагает следующие операции: 1. создание потокового объекта; 2. открытие потока и связывание его с файлом; 3. осуществление чтения/записи; 4. закрытие файла.
Оператор вывода – это бинарный оператор, который возвращает ссылку на объект класса ostream. В общем случае структура определения перегруженного оператора вывода выглядит так:
ostream& operator <<(ostream& os, const ClassType &object )