Библиотека потоков ввода-вывода содержит средства форматированного и неформатированного буферизованного ввода-вывода текста и числовых значений.
Определения потоков ввода-вывода находятся в заголовках , и т.п.
Объект класса ostream преобразовывает объекты, имеющие тип, в поток символов (байтов).
Значения разных типов Последовательности символов
Объект класса istream преобразовывает поток символов (байтов) в объекты, имеющие тип.
Значения разных типов Последовательности символов
Объект класса iostream — это поток, который может действовать и как объект класса istream, и как объект класса ostream. Буфера, изображенные на диаграмме, являются потоковыми буферами (streambuf). Если читателям потребуется перейти от потоков класса iostream к новым видам устройств, файлов или памяти, они смогут найти их описание в профессиональных учебниках.
Существуют три стандартных потока.
Стандартные патоки ввода-вывода
cout Стандартный потока вывода (по умолчанию, как правило, экран)
cin Стандартный поток ввода (по умолчанию, как правило, клавиатура)
cerr Стандартный поток сообщений об ошибках (небуферизованный)
Иерархия потоков ввода-вывода
Поток istream можно связать с устройством ввода (например, клавиатурой), файлом или объектом класса string. Аналогично поток ostream можно связать с устройством вывода (например, текстовым окном), файлом или объектом класса string. Потоки ввода-вывода образуют иерархию классов.
[ istream ] [ ostream ]
[ stringstream ] [ fstream ]
Поток можно открыть либо с помощью конструктора, либо вызова функции open().
Потоки ввода
stringstream(m)
stringstream(s,m)
fstream()
fstream(s,m)
fs.open(s,m)
fs.is_open()
Создает пустой строковый поток в режиме m
Создает строковый поток, содержащий объект string s, в ре-
жиме m
Создает файл, который будет открыт позднее
Открывает файл s в режиме m и создает файловый поток, ссылающийся на него
Открывает файл s в режиме m и устанавливает связь между потоком fs и этим файлом Открыт ли поток fs?
Для файловых потоков имя файлов представляет собой строку в стиле языка С. Открыть файл можно в одном из режимов, приведенных ниже.
Режимы потоков
ios base: :app Добавление (т.е. добавление записей в конец файла)
ios base: :ate “ate” означает “at end” (т.е. открытие и поиск конца файла)
ios base: :binary Бинарный режим. Остерегайтесь этого режима, поскольку он зависит от специфики конкретной системы
ios base: :in Для чтения
ios base: :out Для записи
ios base: :trunc Урезать файл до нулевой длины
В каждом из этих режимов открытие файла может зависеть от операционной системы и ее возможностей учесть требование программиста открыть файл именно так, а не иначе. В результате поток может не оказаться в состоянии good(). Рассмотрим пример.
void my_code(ostream& os); // функция my_code может использовать
// любой поток вывода ostringstream os; // буква "o" означает "для вывода"
ofstream of("my_file");
if (!of) error("невозможно открыть ,my_filel для записи"); my_code(os); // используется объект класса string my_code(of); // используется файл
Опубликовал katy
May 08 2015 11:03:44 ·
0 Комментариев ·
3041 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.