Класс string определяет две дополнительные функции-члена, append() и replace(), способные изменить содержимое строки. Все эти функции описаны в табл. 9.13. Функция append() — упрощенный способ вставки в конец:

string s("C++ Primer"), s2 = s; // инициализация строк s и s2

                                // текстом "С++ Primer"

s.insert(s.size(), " 4th Ed."); // s == "С++ Primer 4th Ed."

s2.append(" 4th Ed."); // эквивалент: добавление " 4th Ed." к s2;

                       // s == s2

Функция replace() — упрощенный способ вызова функций erase() и insert():

// эквивалентный способ замены "4th" на "5th"

s.erase(11, 3); // s == "С++ Primer Ed."

s.insert(11, "5th"); // s == "С++ Primer 5th Ed."

// начиная с позиции 11, удалить три символа, а затем вставить "5th"

s2.replace(11, 3, "5th"); // эквивалент: s == s2

В вызове функции replace() вставляемый текст может быть того же размера, что и удаляемый. Но можно вставить большую или меньшую строку:

s.replace(11, 3, "Fifth"); // s == "С++ Primer Fifth Ed."

В этом вызове удаляются три символа, но вместо них вставляются пять.

Таблица 9.13. Функции изменения содержимого строки

s.insert(pos, args)Вставка символов, определенных аргументом args, перед позицией pos. Позиция pos может быть задана индексом или итератором. Версии, получающие индекс, возвращают ссылку на строку s, а получающие итератор возвращают итератор, обозначающий первый вставленный символ
s.erase(pos, len)Удаляет len символов, начиная с позиции pos. Если аргумент len пропущен, удаляет символы от позиции pos до конца строки s. Возвращает ссылку на строку s
s.assign(args)Заменяет символы строки s согласно аргументу args. Возвращает ссылку на строку s
s.append(args)Добавляет аргумент args к строке s. Возвращает ссылку на строку s
s.replace(range, args)Удаляет диапазон range символов из строки s и заменяет их символами, заданными аргументом args. Диапазон задан либо индексом и длиной, либо парой итераторов. Возвращает ссылку на строку s
Аргументы args могут быть одним из следующих: функции append() и assign() могут использовать все формы. Строка str должна быть отлична от s, а итераторы b и е не могут принадлежать строке s
strСтрока str
str, pos, lenДо len символов из строки str, начиная с позиции pos
cp, lenДо len символов из символьного массива, на который указывает указатель cp
cpЗавершающийся нулевым символом массив, на который указывает указатель cp
n, cn копий символа с
b, eСимволы в диапазоне, указанном итераторами b и е
Список инициализацииРазделяемый запятыми список символов, заключенный в фигурные скобки
Аргументы args для функций replace() и insert() зависят от того, использован ли диапазон или позиция
replace(pos,len,args)replace(b,е,args)insert(pos,args)insert(iter,args)Возможные аргументы args
ДаДаДаНетstr
ДаНетДаНетstr, pos, len
ДаДаДаНетcp, len
ДаДаНетНетcp
ДаДаДаДаn, с
НетДаНетДаb2, e2
НетДаНетДасписок инициализации
Перейти на страницу:

Похожие книги