Система ввода вывода старого стиля в языке C++

Поскольку язык C++ полностью включает библиотеку С, он поддерживает и использование системы ввода-вывода языка С. Однако C++ также определяет собственную объектно-ориентированную, основанную на использовании классов систему ввода-вывода, которую называют библиотекой классов потоков ввода-вывода(iostream library). При написании программ на языке C++ вам стоит использовать именно собственную библиотеку C++(iostream-библиотеку), а не С-ориентированную.

На момент написания этой главы существуют две версии iostream-библиотеки, причем обе широко используются программистами: более старая, основанная на оригинальных спецификациях языка C++, и новая, определенная стандартом ANSI/ISO для языка C++. В настоящее время большинство компиляторов C++ поддерживают iostream-библиотеки как старого, так и нового стилей. Однако следует иметь в виду, что iostream-библиотека старого стиля уже устарела и ее не следует использовать при написании новых программ. Новые приложения должны предусматривать использование новых подходов к программированию, определенных стандартом ANSI/ISO для языка C++. Описание iostream-библиотеки старого стиля, приведенное в данной главе, предназначено для тех программистов, которые вынуждены поддерживать старые программы или хотят перевести старый код в новый стандарт. Новый подход к программированию задач ввода-вывода на языке C++ описан в главе "классы ввода-вывода библиотеки стандарта C++".

Большей частью iostream-библиотеки как старого, так и нового стилей работают в одном и том же ключе. Если вы знаете, как использовать одну библиотеку, вы сможете легко работать и с другой. Однако между ними имеется ряд существенных различий.

Во-первых, оригинальные классы потоков ввода-вывода были определены в глобальном пространстве имен, а новая библиотека содержится в пространстве имен std.

Во-вторых, новая библиотека определена с помощью сложного набора взаимосвязанных шаблонных классов и функций, а в библиотеке старого стиля используется менее сложная иерархия классов без применения шаблонов. К счастью, имена классов, которые вы будете использовать в своих программах, остаются прежними.

В-третьих, новая iostream-библиотека определяет много новых типов данных.

В-четвертых, для использования старой библиотеки необходимо включать в свои программы заголовочные файлы с расширением .h, например iostream.h. В этих заголовочных файлах определяются потоковые классы старого стиля, которые относятся к глобальному пространству имен. И наоборот, для использования новой библиотеки потоковых классов включите в свою программу заголовок нового стиля <iostream>.

И еще одно, Поскольку библиотека старого стиля нестандартна, ее точные реализации будут различными для разных компиляторов и она может отличаться от библиотеки, описанной здесь.


Смотрите также

Базовые классы потоков ввода вывода
Встроенные потоки C++
Флаги форматирования
Манипуляторы ввода-вывода
Пример использования потоков
Функции ввода вывода старого стиля в языке C++

Класс ios

Назначение: обеспечивает операции ввода-вывода общего назначения
Заголовок:
Иерархия: базовый класс классов ввода-вывода

Методы

bad - Проверка потока на ошибку
clear - Очищает флаги состояния, связанные с потоком
eof - Проверка конца файла
fail - Проверка на присутствие ошибки ввода-вывода
fill - Проверка на присутствие ошибки ввода-вывода
flags - Работа с флагами
good - Проверка на отутствие ошибок вводв-вывода
precision - Возвращает или устанавливаеттекущее значение точности
rdstate - Возвращает состояние соответствующего потока
setf - Устанавливает флаги форматирования
sync_with_stdio - Позваляет использовать стандартную С-подобную систему ввода-вывода
unsetf - Очистка одного или нескольких флагов форматирования
width - Работа с шириной поля

Класс istream

Назначение: поддерживает операции ввода
Заголовок:
Иерархия: ios -> istream

Методы

eatwhite - Читает и отбрасывает все ведущие пробельные символы
gcount - Возврат количества символов, прочитанных во время последней операции ввода
getline - Читает строку из потока
get - Читает символы из потока
ignore - Чтение и отбрасывание символов из потока ввода
peek - Возвращает следующий символ в потоке или значение EOF
putback - Возвращает символ в соответствующий поток ввода
read - Читает байты из соответствующего потока ввода
seekg - Перемещает указатель ввода
tellg - Определение текужего указателя ввода

Класс ostream

Назначение: поддерживает операции вывода
Заголовок:
Иерархия: ios -> ostream

Методы

flush - Запись содержимого буфера
put - Записывает символ ch в соответствующий поток вывода
seekp - Перемещает указатель вывода
tellp - Определение текужего указателя вывода
write - Записывает из буфера байты в соответствующий поток вывода

Классы fstream, ifstream и ofstream

Назначение: поддерживает операции файлового ввода-ввода
Заголовок:
Иерархия:

Методы

open - Закрывает файл связаный с потоком
open - Связывает файл с потоком
setmode - Устанавливает режим работы соответствующего потока: двоичный или текстовый

Классы strstream, istrstream и ostrstream

Назначение: поддерживают операции ввода-вывода, ввода и вывода ориентированные на использование специальных массивов соответственно
Заголовок:
Иерархия:

Методы

str - Фиксирует динамический массив и возвращает на него указатель