Оператор +=, как и функция append, может присоединять к исходной строке как С-строки, так и string-объекты. Но оператор += присоединет строковые значения, определяемые одним аргументом, функция же appendможет иметь несколько аргументов (см. табл. 1). Первый аргумент функции insert – это индекс, c которого вставляется новая С-строка или строка string. Функция insert широко используется для вставки символов (см. следующий раздел), в этом случае она имеет более двух аргуметов.
Функцииinsert, replace, erase.
Функция вставки символов insert очень удобна: вам не придется беспокоиться, чтобы вставляемые символы не вышли за пределы текущего блока памяти. Строка расширяется, и существующие симво-лы вежливо подвигаются, уступая место новым.
Если вы хотите, чтобы существующие символы были заменены новыми, воспользуйтесь функцией перезаписи replace. Существует несколько перегруженных версий replace, но простейшая форма получает три аргумента:
· начальную позицию в строке;
· количество символов, заменяемых в исходной строке;
· строку замены (длина которой может не совпадать со вторым аргументом).
Строка замены может быть как типа char*, так и типа string.
Функция erase легко и эффективно удаляет символы из строк. Функция получает два аргумента: начальную позицию удаления (по умолчанию 0) и количество удаляемых символов (по умолчанию все). Если заданное количество символов больше количества оставшихся символов в строке, стираются все символы до конца (таким образом, вызов erase без аргументов удаляет из строки все символы).
Пример 4
string s1("Это простой тест.");
string s2("ABCDEFG");
cout <<"Исходные строки:\n";
cout << "s1: " << s1 << endl;
cout << "s2: " << s2 << "\n\n";
// Демонстрация использования функции insert для вставки символов
cout << "Вставляем в строку s1 с 5 позиции 4 символа строки s2, начиная с 0 позиции:\n";
s1.insert(5, s2,0,4);
cout <<s1 << "\n\n";
// Демонстрацияиспользования функции erase
cout << "Удаляем 4 символов из строки s1, начиная с 5 позиции:\n";
s1.erase(5,4);
cout << s1<< "\n\n";
// Демонстрация использования функции replace
cout <<"Заменяем 2 символа в s1, начиная с 6 позиции, 3 символами строки s2 с 1 позиции:\n";
s1.replace(6, 2, s2,1,3);
cout << s1 << endl;
Результат
Исходные строки:
s1: Это простой тест.
s2: ABCDEFG.
Вставляем в строку s1 c 5 позиции 4 символа строки s2, начиная с 0 позиции:
Это пABCDростой тест.
Удаляем 4 символа из строки s1, начиная с 5 позиции:
Это простой тест.
Заменяем 2 символа в s1, начиная с 6 позиции, 3 сиволами строки s2 с 1 позиции:
Это прBCDтой тест.
Анализ
В данной программе в четвертый аргумент функции replace пе-редается 3 символа строки s2, которые заменяют 2 символа строки s1, т. е. 2 символа заменили на 3 символа, а часть строки, оставшаяся после вставки, просто подвинулась!
Функции группы find класса string предназначены для поиска символа или группы символов в заданной строке. Приведем две наибо-лее применяемые функции этой группы.
find
Ищет в строке символ или группу символов. Возвращает начальную позицию первого найденного экземпляра или npos при отсутствии совпадений.
find_first_of
Ищет в строке и возвращает позицию первого символа, совпадающего с любым символом из заданной группы. При отсутствии совпадений возвращает npos.
Если передать в качестве параметра find_first_of один символ, вызов find_first_of будет полностью аналогичен вызову find. Однако если передать в качестве параметра find_first_of строку, метод вернет индекс первого вхождения любого символа из данной строки:
string s = "Hello, World!";
int index = s.find_first_of(’ ’); // поиск первого пробела
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.