Класс string определяет две дополнительные функции-члена, append() и replace(), способные изменить содержимое строки. Все эти функции описаны в табл. 9.13. Функция append() — упрощенный способ вставки в конец:
string s("C++ Primer"), s2 = s; //
//
s.insert(s.size(), " 4th Ed."); //
s2.append(" 4th Ed."); //
//
Функция replace() — упрощенный способ вызова функций erase() и insert():
//
s.erase(11, 3); //
s.insert(11, "5th"); //
//
s2.replace(11, 3, "5th"); //
В вызове функции replace() вставляемый текст может быть того же размера, что и удаляемый. Но можно вставить большую или меньшую строку:
s.replace(11, 3, "Fifth"); //
В этом вызове удаляются три символа, но вместо них вставляются пять.
Таблица 9.13. Функции изменения содержимого строки
s.insert( | Вставка символов, определенных аргументом , перед позицией . Позиция может быть задана индексом или итератором. Версии, получающие индекс, возвращают ссылку на строку s, а получающие итератор возвращают итератор, обозначающий первый вставленный символ |
s.erase( | Удаляет символов, начиная с позиции . Если аргумент пропущен, удаляет символы от позиции до конца строки s. Возвращает ссылку на строку s |
s.assign( | Заменяет символы строки s согласно аргументу . Возвращает ссылку на строку s |
s.append( | Добавляет аргумент к строке s. Возвращает ссылку на строку s |
s.replace( | Удаляет диапазон символов из строки s и заменяет их символами, заданными аргументом . Диапазон задан либо индексом и длиной, либо парой итераторов. Возвращает ссылку на строку s |
Аргументы могут быть одним из следующих: функции append() и assign() могут использовать все формы. Строка str должна быть отлична от s, а итераторы b и е не могут принадлежать строке s | |
|---|---|
str | Строка str |
str, pos, len | До len символов из строки str, начиная с позиции pos |
cp, len | До len символов из символьного массива, на который указывает указатель cp |
cp | Завершающийся нулевым символом массив, на который указывает указатель cp |
n, c | n копий символа с |
b, e | Символы в диапазоне, указанном итераторами b и е |
| Разделяемый запятыми список символов, заключенный в фигурные скобки |
Аргументы для функций replace() и insert() зависят от того, использован ли диапазон или позиция | ||||
|---|---|---|---|---|
replace(pos,len, | replace(b,е, | insert(pos, | insert(iter, | Возможные аргументы |
| Да | Да | Да | Нет | str |
| Да | Нет | Да | Нет | str, pos, len |
| Да | Да | Да | Нет | cp, len |
| Да | Да | Нет | Нет | cp |
| Да | Да | Да | Да | n, с |
| Нет | Да | Нет | Да | b2, e2 |
| Нет | Да | Нет | Да | |