- •Лекция 1 Динамическая память и интеллектуальные указатели.
- •Лекция 2
- •Лекция 3
- •Исчерпание памяти
- •Лекция 4 Smart-pointer для обработки исключений
- •Создание собственного кода удаления
- •Класс unique_ptr
- •Класс weak_ptr
- •Использование динамических массивов
- •Смарт поинтеры и динамические массивы
- •Класс allocator
- •Тема 2. Обработка исключительных ситуаций
- •Лекция 7
- •Класс Exception
- •Лекция 8
- •Потоки, буферы и файл iostream
- •Перегруженная операция вставки
- •Лекция 9
- •Ввод с помощью cin
- •Тема 4. Файловый ввод/вывод
- •Лекция 10
- •Режимы открытия файла
- •Бинарные файлы
- •Лекция 11
- •Тема 5. Библиотека шаблонов Standart Template Library (stl)
- •Шаблонный класс Vector
- •Лекция 12
- •Цикл for , основанный на диапазоне
- •Обобщённое программирование
- •Лекция 13
- •Виды итераторов
- •Входные итераторы
- •Однонаправленные итераторы
- •Двунаправленные итераторы
- •Произвольного доступа
- •Лекция 14 Двунаправленные итераторы
- •Виды контейнеров
- •Лекция 15 Разработка с использованием Java-платформы
- •Этапы развития языка Java
- •Байт-код
- •Особенности языка Java
- •Программная платформа и виртуальная машина Java
- •Особенности разработки и исполнения объектно-ориентированных приложений на Java Сборка мусора в Java
- •Пакет jdk
- •Ide для работы на Java
- •Особенности настройки работы платформы Java
- •Запуск приложения на языке Java без ide
- •Особенности лексики Java
- •Примитивные типы данных Java
- •Переменные
- •Объявление переменной
- •Область и срок действия переменной
- •Преобразование и приведение типов. Автоматическое приведение и продвижение типов в выражениях. Логические выражения. Арифметические операции
- •Логические операции
- •Предшествование операций
- •Управляющие операторы
- •Операторы выбора Условный оператор if
- •Операторы цикла
- •Разновидность цикла for в стиле for each
- •Применение оператора instanceof
- •Принципы ооп
Перегруженная операция вставки
Операция вывода в поток (<<) может быть использована как операция побитового сдвига влево. Но класс ostream перегружает операцию вывода в поток. В этой ипостаси этот оператор называется оператором вставки. Роль операции << определяется исходя из контекста. Операция вставки перегружена в классе ostream для всех базовых типов языка.
Все реализации операции вставки имеют тип возвращаемого значения ostream&. Это ссылка на тот же объект, который использован для вызова операции. Данный возвращаемый тип позволяет выполнять конкатенацию вывода.
Метод put() из класса basic_ostream предназначен для вывода одиночного символа в поток.
Метод write() записывает целую строчку в поток вывода, получая адрес строки и количество отображаемых символов. Метод write() не прекращает вывод строки при достижении символа конца строки, даже если при выводе произойдёт выход за границы.
7 апр 2021
Лекция 9
Поскольку буфер класса ostream управляется объектом cout вывод не отправляется по назначению немедленно. Вместо этого он накапливается в буфере до тех пор пока не заполнит его. Затем буфер очищается, отправляя его содержимое по назначению. Чаще размер буфера равен 512 байт или кратен этому числу
Операции вставки ostream преобразуют значеиня в текстовую форму.
Значения типа char, если это печатный символ, то выражается как символ в поле шириной 1.
Целочисленные типа отображаются как десятичные целые числа в поле с шириной, достаточной для отображения и числа, и знача, если таковой имеется.
Строки отображаются в поле шириной, равной длине строки
Класс ios_base хранит информацию, описывающую состояние формата. Определенные биты в одном элементе определяют например ширину поля, выравнивание...
По умолчанию объект cout заполняет неиспользуемые части выводдимого поля пробелами. При использовании функции fill можно задать собственный символ-заполнитель, который будет действовать до тех пор, пока явно не будет изменен.
Функция set_f и unset_f предназначены для установки и снятия флага, при этом могут быть получены ранее установленные флаги.
Т.к. язык С++ является ОО, то кроме функций установки флагов были разработаны отдельные манипуляторы, позволяющие выполнять те же задачи.
Ввод с помощью cin
Объект cin представляет собой обычный поток ввода байт. В классе iostream перегружены операции получения потока для всех базовых типов.
Объекты cin cout сщдержат элементы данных, описывающие состояние потока, который определяется типом ios_state, состоящим из 4 элементов:
Badbit
Eofbit
Failbit
Goodbit
Каждый элемент – это отдельный бит, который может быть установлен или сброшен. Когда операция ввода объекта cin достигает конца файла, флаг eofbit устанавливается 1. Если операция ввода для объекта не может прочитать полученный символ, failbit устанавливается 1. Badbit устанавливается 1, когда происходит сбой, не поддающийся диагностике и не позволяющий дальше работать с потоками ввода. Но если же три этих бита установлены 0, то goodbit устанавливается 1.