Глава 13. Обзор потоков ввода-вывода___________________________303
прочитать главы 14 "Базовые концепции классов", 15 "Перегрузка функций" и 16 "Перегрузка операций", прежде чем вернуться обратно к этой главе.
Итак, эта глава представляет вам мощный инструментарий программирования на C++, и мы приложим все силы, чтобы исчерпывающе объяснить вам все то, что знать просто необходимо, в том числе следующее:
• Знакомство с потоками ввода-вывода
• Основные применения cin и cout
• Функции-члены
• Форматирование потоков вывода
• Написание манипуляторов потока
• Файловые потоки
• Буферизуемые потоки
• Перегрузка потоковых операций
Введение в класс lostream
В этой главе мы не станем рассматривать потоки ввода-вывода с точки зрения иерархии классов. Это не означает, что взаимосвязи классов из библиотек потоковых классов не представляют интереса, просто всему свое время, и мы начнем свое знакомство с потоками с изучения их применения.
Для начала давайте разберемся, что можно делать с потоками, узнаем немного об основах их функционирования, выясним, как применять их наиболее передовые возможности.
Потоковые классы
Классы для потоков ввода-вывода были разработаны как объектно-ориентированное средство чтения и записи данных. Поскольку ввод и вывод в C++ не являются частью языка, пришлось позаимствовать ввод-вывод для файлов, мониторов и принтеров из С. Если вы знаете и любите С, вы наверняка знаете, в чем состоит разница при выводе на различные устройства.
Замечание
C++ — это надмножество языка С. Создавая C++, Бьерн Страуструп не случайно выбрал С в качестве базового языка. Общеизвестно, что С генерирует компактный, быстрый код и предоставляет программистам простой доступ к аппаратному обеспечению. Наверное, удобнее было иметь вполне зарекомендовавший себя язык (разработчики которого Бриан Керниган и Дэннис Ритчи, кстати, до сих пор работают в AT&T) в качестве фундамента, чем начинать дело с нуля.