
- •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. Функциональные объекты. Арифметические функциональные объекты
39. Операции класса string
Ниже приведены допустимые для объектов класса string операции:
Операция |
Действие |
Операция |
Действие |
= |
присваивание |
> |
больше |
+ |
конкатенация |
>= |
больше или равно |
== |
равенство |
[ ] |
индексация |
!= |
неравенство |
<< |
вывод |
< |
меньше |
>> |
ввод |
<= |
меньше или равно |
+= |
добавление |
Размеры строк устанавливаются автоматически так, чтобы объект мог содержать присваиваемое ему значение. Кроме операции индексации, для доступа к элементу строки определена функция at:
string s("Bacя");
cout « s.at(l); // Будет выведен символ а
Если индекс превышает длину строки, порождается исключение out_of_range.
40. Функции работы со строками. Присваивание и добавление частей строк
Для присваивания части одной строки другой служит функция 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
Вторая форма присваивает вызывающей строке часть строки str, начиная с позиции pos. Если pos больше длины строки, порождается исключение out_of_range. Вызывающей строке присваивается n символов, либо, если pos + n больше, чем длина строки str, все символы до конца строки str.
Третья форма присваивает вызывающей строке n символов строки s старого типа.
Для добавления части одной строки к другой служит функция append:
append(const string& str );
append(const string& str. size_type pos. size_type n);
append(const char* s. size_type n);
Первая форма функции добавляет строку str к концу вызывающей строки, при этом действие функции эквивалентно операции конкатенации (+).
Вторая форма добавляет к вызывающей строке часть строки str, начиная с позиции pos. Если pos больше длины строки, порождается исключение out_of_range. К вызывающей строке добавляется n символов, либо, если pos + n больше, чем длина строки str, все символы до конца строки str. Если длина результата больше максимально допустимой длины строки, порождается исключение length_error.
Третья форма добавляет к вызывающей строке n символов строки s старого типа.
41. Функции работы со строками. Преобразование строк. Поиск подстрок. Сравнение частей строк
Для вставки в одну строку части другой строки служит функция insert:
insert(size__type pos1. const string& str );
Функция вставляет строку str в вызывающую строку, начиная с позиции pos1 вызывающей строки. Иными словами, вызывающая строка замещается строкой, которая состоит из первых pos1 символов вызывающей строки, за которыми следует строка str целиком, а после нее располагаются остальные символы вызывающей строки. Если pos1 больше длины строки, порождается исключение out_of_range. Если длина результата больше максимально допустимой длины строки, порождается исключение length__error.
Для удаления части строки служит функция erase:
erase(size_type pos = 0, size_type n = npos);
Она удаляет из вызывающей строки n элементов, начиная с позиции pos. Если pos не указано, элементы удаляются с начала строки. Если не указано n, удаляется весь остаток строки.
Очистку всей строки можно выполнить с помощью функции clear:
void clear();
Для замены части строки служит функция replace:
replace(size_type posl, size_type nl, const str1ng& str);
Для обмена содержимого двух строк служит функция swap:
swap(strings s);
Для выделения части строки служит функция substr:
string substr(size_type pos = 0, size_type n = npos) const;
Для поиска в классе string предусмотрено большое разнообразие функций, например:
size__type find(const string& str., size_type pos = 0) const - Ищет самое левое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию строки
или npos, если строка не найдена.
size_type find(char с, size_type pos = 0) const; - Ищет самое левое вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию символа или npos, если символ не найден и др.
Если требуется сравнивать части строк, используется функция compare:
int compare(const string& str) const; - функция сравнивает две строки целиком и возвращает значение, меньшее (), если вызывающая строка лексикографически меньше str, равное нулю, если строки одинаковы, и большее нуля — если вызывающая строка больше.