Министерство образования Республики Беларусь
Министерство образования Республики Беларусь
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра эконмической информатики
Объектно-ориентированное программирование
Лабораторная работа №3
“ПОТОКИ ВВОДА/ВЫВОДА В ЯЗЫКЕ С++”
Выполнила: Студентка группы
972303
Рушева Маргарита
Владиславовна
Проверила: Григорьева Юлия
Юрьевна
Минск, 2021
1 Цель лабораторной работы
Изучить понятие потока; организацию ввода данных из потока и вывода в поток; контроль состояния потока и исправление ошибок; неформатированный ввод-вывод; манипуляторы потоков (стандартные и определяемые пользователем).
2 Теория по лабораторной работе
ПОТОКОВЫЕ КЛАССЫ
В языке C++ поток ввода-вывода представляет собой объект класса потокового ввода-вывода. Разные потоки предназначены для обработки разных видов данных. Например, класс ifstream представляет собой поток ввода данных, который может быть связан с файлом
Можно перегружать стандартные операторы вставки (<>) данных для работы с объектами создаваемых классов.
ИЕРАРХИЯ ПОТОКОВЫХ КЛАССОВ
При работе с потоковой библиотекой ввода-вывода C++ достаточно активно используются следующие классы: ios – базовый потоковый класс; istream – класс входных потоков; ostream – класс выходных потоков; iostream – класс двунаправленных потоков ввода-вывода; ifstream – класс входных файловых потоков; ofstream – класс выходных файловых потоков; fstream – класс двунаправленных файловых потоков (ввода-вывода); Операция извлечения из потока >> является методом класса istream, операция вставки в поток << — методом класса ostream. Оба этих класса являются наследниками класса ios.
МАНИПУЛЯТОРЫ. ФЛАГИ ФОРМАТИРОВАНИЯ
Для установки флага вывода используется следующая конструкция языка C++: cout.setf(ios::flag) Для снятия флага конструкция: cout.unsetf(ios::flag) Здесь параметр flag обозначает имя конкретного флага. Если необходимо установить несколько флагов, то можно воспользоваться операторм «или» (|). В этом случае оператор языка C++ будет такой: cout.setf(ios::flag1 | ios::flag2 | ios::flag3) В данном случае flag1, flag2, flag3 — имена устанавливаемых флагов.
ОБЪЕКТЫ ГЛОБАЛЬНЫХ ПОТОКОВ
Еще двумя предопределенными объектами являются cerr и clog. Объект cerr определяет глобальный поток вывода ошибок. Объект cerr управляет вставками без буфера в стандартный поток вывода ошибок в виде потока байтов. Объект clog определяет глобальный поток вывода ошибок с буферизацией. Объект clog управляет буферизованными вставками в стандартный поток вывода ошибок в виде потока байтов. Объект cerr часто используется для сообщений об ошибках и программной диагностики. Поток данных, отправленный в него, немедленно выводится на экран, минуя буферизацию. Этим cerr отличается от cout. К тому же этот поток не может быть перенаправлен. Объект, clog, похож на cerr в том, что также не может быть перенаправлен. Но его вывод проходит буферизацию.
ОШИБКИ ПОТОКОВ