- •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. Функциональные объекты. Арифметические функциональные объекты
35. Строковые потоки. Базовые классы строковых потоков: istringstream, ostringstream, stringstream
Строковые потоки позволяют считывать и записывать информацию из областей оперативной памяти так же, как из файла, с консоли или на дисплей. В стандартной библиотеке определено три класса строковых потоков:
istringstream — входные строковые потоки;
ostringstream — выходные строковые потоки;
stringstream — двунаправленные строковые потоки.
Эти классы определяются в заголовочном файле <sstream> и являются производными от классов istream, ostream и iostream соответственно, поэтому они наследуют перегруженные операции « и », флаги форматирования, манипуляторы, методы, состояние потоков и т. д.
Строковые потоки создаются и связываются с этими участками памяти с помощью конструкторов:
explicit istringstream(int mode = ios::in);
explicit ostringstream(int mode = ios::out) и т.д.
В строковых потоках описан метод str, возвращающий копию строки или устанавливающий ее значение:
string str() const;
void str(const string & s);
Проверять строковый поток на переполнение не требуется, поскольку размер строки изменяется динамически.
36. Потоки и типы, определенные пользователем
Для ввода и вывода в потоках используются перегруженные для всех стандартных типов операции чтения и извлечения « и ». При этом выбор конкретной операции определяется типом фактических параметров.
Для того чтобы вводить и выводить величины типов, определенных пользователем, требуется перегрузить операции. Это бинарные операции, левым операндом которых является объект-поток, а правым — объект, который требуется извлечь или поместить в этот поток. Возвращаемое значение должно быть ссылкой на поток, чтобы можно было организовывать цепочки операций, как и в случае стандартных типов.
37. Строки. Конструкторы и присваивание строк
Библиотека содержит функции для работы с такими массивами, унаследованные от С и описанные в заголовочном файле <string.h> (<cstring>).
Основные действия со строками выполняются в нем с помощью операций и методов, а длина строки изменяется динамически в соответствии с потребностями. Для использования класса необходимо подключить к программе заголовочный файл <string>.
В классе string определено несколько конструкторов. Ниже в упрощенном виде приведены заголовки наиболее употребительных:
string();
string(const char * );
string(const char *. int n);
string(string &);
Первый конструктор создает пустой объект типа string.
Второй создает объект типа string на основе строки старого стиля, третий создает объект типа string и записывает туда n символов из строки, указанной первым параметром.
Последний конструктор является конструктором копирования, который создает новый объект как копию объекта, переданного ему в качестве параметра.
В классе string определены три операции присваивания:
strings operator=(const string& str);
string& operator=(const char* s);
string& operator=(char c);
38. Создание объекта string. Операция присваивания строк
В классе string определены три операции присваивания:
strings operator=(const string& str);
string& operator=(const char* s);
string& operator=(char c);
Для присваивания части одной строки другой служит функция assign:
assign(const string& str);
assign(const string& str, size_type pos, size_type n):
assign(const char* s, size_type n);
Первая форма функции присваивает строку str вызывающей строке, при этом действие функции эквивалентно операции присваивания:
string s1(“Вася”). s2;
s2.assign(sl); // Равносильно s2 = s1
