
- •1. Динамические структуры данных
- •2. Динамические структуры данных. Линейные списки: Очередь, стек.
- •3. Динамические структуры данных. Деревья
- •4. Классы. Описание классов. Описание объектов. Указатель this.
- •5. Статические элементы класса. Статические поля. Статические методы.
- •6. Дружественная функция. Дружественный класс.
- •7. Деструкторы
- •8. Перегрузка операций. Перегрузка унарных операций
- •9. Перегрузка бинарных операций
- •10. Перегрузка операций присваивания
- •11. Перегрузка операции приведение типа
- •12. Наследование. Ключи доступа. Простое наследование
- •13. Виртуальные методы. Алгоритмы позднего связывания
- •Механизм позднего связывания
- •14. Множественное наследование
- •15. Создание произвольного класса на базе основного
- •16. Обработка исключительных ситуаций. Общий механизм обработки исключений
- •17. Синтаксис исключений. Перехват исключений
- •18. Список исключений функций
- •19. Иерархии исключений
- •20. Исключения в конструкторах и деструкторах
- •21. Преобразование типов. Неявные преобразования типов
- •22. Преобразования типов в выражениях
- •23. Явные преобразования типов. Операция const_cast. Операция dynamic_cast
- •Операция const_cast
- •Операция dynamic_cast
- •24. Повышающее преобразование. Понижающее преобразование
- •25. Преобразование ссылок. Перекрестное преобразование
- •26. Преобразование типа на стадии компиляции. Операция static_cast. Операция reinterpret_cast
- •27. Динамическое определение типа. Операция type_id. Класс type_info
- •28. Потоки. Стандартные потоки. Объекты заголовочного файла iostream
- •29. Правила ввода и вывода величин
- •30. Форматирование данных. Флаги и форматирующие методы. Манипуляторы
- •31. Методы обмена с потоками. Класс iоstream
- •32. Ошибки потоков
- •33. Базовый класс ios. Методы и операции класса ios
- •34. Файловые потоки. Классы для работы с файлами: ifstream, ofstream, fstream
- •35. Строковые потоки. Базовые классы строковых потоков: istringstream, ostringstream, stringstream
- •36. Потоки и типы, определенные пользователем
- •37. Строки. Конструкторы и присваивание строк
- •38. Создание объекта string. Операция присваивания строк
- •39. Операции класса string
- •40. Функции работы со строками. Присваивание и добавление частей строк
- •41. Функции работы со строками. Преобразование строк. Поиск подстрок. Сравнение частей строк
- •42. Функции работы со строками. Получение характеристик строк
- •43. Обратные итераторы. Итераторы вставки. Потоковые итераторы
- •Обратные итераторы
- •Итераторы вставки
- •Потоковые итераторы
- •44. Функциональные объекты. Арифметические функциональные объекты
29. Правила ввода и вывода величин
30. Форматирование данных. Флаги и форматирующие методы. Манипуляторы
В потоковых классах форматирование выполняется тремя способами с помощью флагов, манипуляторов и форматирующих методов.
Флаги представляют собой отдельные биты, объединенные в поле x_flags типа long класса ios. Для управления флагами в классе ios есть методы flags, setf и unsetf.
long ios:: flags(); — возвращает текущие флаги потока;
long ios:: flags (long); — присваивает флагам значение параметра и др.
Примеры флагов форматирования: left/right - выравнивание по левому/правому краю поля; dec - десятичная система счисления и др.
Манипуляторами называются функции, которые можно включать в цепочку операций помещения и извлечения для форматирования данных. Манипуляторы делятся на простые, не требующие указания аргументов, и параметризованные.
Примеры манипуляторов, не требующих изменения: dec — устанавливает при вводе и выводе флаг десятичной системы счисления; oct — устанавливает при вводе и выводе флаг восьмеричной системы счисления; endl — при выводе включает в поток символ новой строки и выгружает буфер и др.
Примерами параметризированных манипуляторов можно назвать: setbase(int n) — задает основание системы счисления (и = 8, 16, 10 или 0); resetiosflags(long) — сбрасывает флаги состояния потока, биты которых установлены в параметре и др.
31. Методы обмена с потоками. Класс iоstream
В потоковых классах наряду с операциями извлечения » и включения « определены методы для неформатированного чтения и записи в поток (при этом преобразования данных не выполняются).
Ниже приведены функции чтения, определенные в классе istream:
gcount() - — возвращает количество символов, считанных с помощью последней функции неформатированного ввода;
get() - возвращает код извлеченного из потока символа или EOF;
peek() - возвращает следующий символ без удаления его из потока или EOF, если достигнут конец файла;
unget() - помещает последний прочитанный символ в поток и возвращает ссылку па текущий поток и др.
Частью стандартной библиотеки C++ является библиотека iostream – объектно-ориентированная иерархия классов, где используется и множественное, и виртуальное наследование. В ней реализована поддержка для файлового ввода/вывода данных встроенных типов. Для использования библиотеки iostream в программе необходимо включить заголовочный файл: #include <iostream>
Операции ввода/вывода выполняются с помощью классов istream (потоковый ввод) и ostream (потоковый вывод). Третий класс, iostream, является производным от них и поддерживает двунаправленный ввод/вывод. Чтобы использовать часть библиотеки iostream, связанную с файловым вводом/выводом, необходимо включить в программу заголовочный файл: #include <fstream>
В классе ostream определены аналогичные функции для неформатированного вывода:
flush() — записывает содержимое потока вывода на физическое устройство;
put (с) — выводит в поток символ с и возвращает ссылку па поток;
tellg() — возвращает текущую позицию записи потока;
write(buf, num) — записывает в поток num символов из массива buf и возвращает ссылку на поток и др.