- •А. В. Кибардин
- •Оглавление
- •Введение
- •Классы Описание класса
- •Описание объектов
- •Указательthis
- •Конструкторы
- •Конструктор копирования
- •Конструктор копирования для класса monstr:
- •Статические элементы класса
- •Статические поля
- •Статические методы
- •Дружественные функции и классы Дружественные функции
- •Дружественный класс
- •Деструкторы
- •Перегрузка унарных операций
- •Перегрузка бинарных операций
- •Перегрузка операции присваивания
- •Перегрузка операции приведения типа
- •Наследование Ключи доступа
- •Простое наследование
- •Правила наследования методов
- •Виртуальные методы и механизм позднего связывания
- •Абстрактные классы
- •Обработка исключительных ситуаций
- •Синтаксис исключений
- •Перехват исключений
- •Список исключений
- •Иерархии исключений
- •Стандартная библиотека
- •Потоковые классы
- •Стандартные потоки
- •Форматирование данных
- •Флаги и форматирующие методы
- •Манипуляторы
- •Методы обмена с потоком
- •Ошибки потоков
- •Файловые потоки
- •Строковые потоки
- •Конструкторы и присваивание строк
- •Операции
- •Функции Присваивание и добавление частей строк
- •Преобразование строк
- •Поиск подстрок
- •Сравнение частей строк
- •Получение характеристик строк
- •Контейнерные классы
- •Последовательные контейнеры
- •Векторы
- •Двусторонние очереди
- •Ассоциативные контейнеры
- •Словари
- •Словари с дубликатами (multimap)
- •Приложение 1. Шаблоны функций
- •Приложение 2. Шаблоны классов
- •Библиографический список
- •В трех частях
Операции
Ниже приведены операции со строками.
Таблица 5
Операции со строками
-
Операция
Действие
=
Присваивание
+
Конкатенация
= =
Равенство
! =
Неравенство
<
Меньше
< =
Меньше или равно
>
Больше
> =
Больше или равно
[ ]
Индексация
<<
Вывод
>>
Ввод
+ =
Добавление
Для строк типа string не соблюдается соответствие между адресом первого элемента строки и именем, как это было в случае строк старого стиля, т. е. &s[0] не равно s.
Кроме операции индексации для доступа к элементу строки определена функция at:
string s("Вася");
cout << s.at (1); // будет выведен символ а
Функции Присваивание и добавление частей строк
Для присваивания части одной строки другой служит функция assign:
assign (const string & str);
assign (const string & str, size_type pos, size_type n);
assign (const char * str, size_type n);
Первая функция присваивает строку str вызывающей строке (эквивалент операции присваивания):
string s1 ("Вася"), s2;
s2.assign (s1);
Вторая функция присваивает вызывающей строке часть строки str, начиная с позиции pos. Если pos больше длины строки, порождается исключение out_of_range. Вызывающей строке присваивается n символов либо, если pos больше длины строки 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.
Третья функция добавляет к вызывающей строке n символов строки s старого типа.
Преобразование строк
Для вставки в одну строку части другой строки служит функция insert:
insert (size_type pos1, const string & str);
insert (size_type pos1, const string & str, size_type pos2, size_type n );
insert (size_type pos, const char* s, size_type n );
Первая функция вставляет строку str в вызывающую строку, начиная с позиции pos1 вызывающей строки (т. е. взывающая строка замещается строкой str, начиная с позиции pos1, а после str располагаются остальные символы вызывающей строки).
Вторая функция вставляет в вызывающую строку, начиная с позиции pos1, часть строки str длиной n символов, начиная с позиции pos2.
Третья функция вставляет в вызывающую строку n элементов строки старого типа, начиная с позиции pos вызывающей строки.
Для удаления части строки служит функция erase:
erase (size_type pos = 0, size_type n = pos);
Функция удаляет из вызывающей строки n элементов, начиная с позиции pos. Если pos не указана, элементы удаляются с начала строки.
Очистку всей строки можно выполнить с помощью функции clear:
void clear ( );
Для замены части строки служит функция replace:
replace (size_type pos1, size_type n1,const string & str);
replace (size_type pos1, size_type n1,const string & str, size_type pos2, size_type n2);
Здесь pos1 – позиция вызывающей строки, начиная с которой выполняется замена; n1 – количество удаляемых элементов, pos2 – позиция строки str, начиная с которой она вставляется в вызывающую строку; n2 – количество вставляемых элементов строки str.
Третья форма функции:
replace (size_type pos1, size_type n1,const char* s, size_type n2);
позволяет заменить n1 символов вызывающей строки на n2 символов строки старого типа s.
Для обмена содержимого двух строк служит функция swap:
swap (string & s);
Для выделения части строки служит функция substr:
substr (size_type pos = 0, size_type n = npos);
Эта функция возвращает подстроку вызывающей строки длиной n символов, начиная с позиции npos.
Для преобразования объектов типа string в строки старого стиля используется функция c_str:
const char* c_str ( ) const;
Функция возвращает константный указатель на оканчивающуюся нуль-символом строку.
Примеры
String s1 ("прекрасная королева"), s2 ("ле"), s3("корова");
cout << s3.insert (4, s2) << endl; // получится: королева
cout << s3.insert (7, “к”) << endl; // получится: королевка
s1.erase (0,3); // получится: s1="красная королева"
cout << s1.erase (12, 2) << endl; // получится: красная корова