Глава 13. Обзор потоков ввода-вывода___________________________307
рим что это и где это находится, а затем познакомимся с простейшими приложениями этих двух объектов.
Объекты cin и cout легко использовать для базовых типов данных. Синтаксис одинаков для всех без исключения базовых (встроенных) типов данных и очень прост: аргументы отделяются друг от друга операциями « для вывода и » для ввода.
Совет
Классы подробно рассматриваются в главе 14 "Базовые концепции классов". В простейшем смысле классы — это сборные конструкции из данных и функций. Поскольку cin и cout — это экземпляры классов, можно предположить, что должны существовать функции для работы с этими объектами.
У объектов cin и cout есть функции-члены; определяющие поведение операций « и » для потоков ввода-вывода. Благодаря им можно выстраивать цепочки операций ввода или вывода для данных самых различных типов при совершенно единообразной нотации:
cout « 10 « 'х' « 3.14159 « " приблизительно равно " « (10 * 3.14) « ^ endl;
Смотрите: здесь ю— это целое число, 'х' — символ, 3.14159— число с плавающей точкой, " приблизительно равно "—строка ASCIIZ, (Ю * 3.14) дает в результате опять число с плавающей точкой, и endl — это манипулятор потока ввода-вывода (stream manipulator).
В свою очередь для ввода данных используется объект cin и операция »;
тип данных значения не имеет.
! Предупреждение
1 Будьте внимательны при считывании символьных массивов — нельзя вводить символов больше, чем выделено места. Такие ловушки легко обходятся, и не следует считать их дефектом самого языка.
Что такое с/л и cout
Объекты cin и cout — это экземпляры (или объекты, или переменные) классов istream withassign И ostream_withassign соответственно. Это означает, что где-то существует спецификация этих классов и определение этих двух объектов. Это самое "где-то" находится в заголовочном файле iostream.h. Включив его (директивой #inciude) в программу, вы даете ей возможность осуществлять ввод-вывод. Вам не нужно определять эти объекты, поскольку это уже сделано. Сами объекты находятся в глобальном пространстве имен, так что их можно использовать внутри любой области видимости в любом модуле, содержащем заголовочный файл iostream.h.