Выбрать главу

string &insert(size_type start, const string &strob);

string &insert(size_type start, const string &strob, size_type insStart, size_type num);

string &replace(size_type start, size_type num, const string &strob);

string &replace(size_type start, size_type orgNum, const string &strob, size_type replaceStart, size_type replaceNum);

Первый формат функции insert() позволяет вставить строку, заданную параметром strob, в позицию вызывающей строки, заданную параметром start. Второй формат функции insert() предназначен для вставки num символов из строки, заданной параметром strob, начиная с индекса insStart, в позицию вызывающей строки, заданную параметром start.

Первый формат функции replace() служит для замены num символов в вызывающей строке, начиная с индекса start, строкой, заданной параметром strob. Второй формат позволяет заменить orgNum символов в вызывающей строке, начиная с индекса start, replaceNum символами строки, заданной параметром strob, начиная с индекса replaceStart. В каждом случае возвращается ссылка на вызывающий объект.

Удалить символы из строки можно с помощью функции erase(). Один из ее форматов выглядит так:

string &erase(size_type start = 0, size_type num = npos);

Эта функция удаляет num символов из вызывающей строки, начиная с индекса start. Функция возвращает ссылку на вызывающий объект.

Использование функций insert(), erase() и replace() демонстрируется в следующей программе.

// Демонстрация использования функций insert(), erase() и replace().

#include <iostream>

#include <string>

using namespace std;

int main()

{

 string str1("Это простой тест.");

 string str2("ABCDEFG");

 cout << "Исходные строки:\n";

 cout << "str1: " << str1 << endl;

 cout << "str2: " << str2 << "\n\n";

 // Демонстрируем использование функции insert().

 cout << "Вставляем строку str2 в строку str1:\n";

 str1.insert(5, str2);

 cout << str1 << "\n\n";

 // Демонстрируем использование функции erase().

 cout << "Удаляем 7 символов из строки str1:\n";

 str1.erase(5, 7);

 cout << str1 <<"\n\n";

 // Демонстрируем использование функции replace().

 cout << "Заменяем 2 символа в str1 строкой str2:\n";

 str1.replace(5, 2, str2);

 cout << str1 << endl;

 return 0;

}

Результаты выполнения этой программы таковы.

Исходные строки:

str1: Это простой тест.

str2: ABCDEFG

Вставляем строку str2 в строку str1:

Это пABCDEFGростой тест.

Удаляем 7 символов из строки str1:

Это простой тест.

Заменяем 2 символа в str1 строкой str2:

Это пABCDEFGстой тест.

Поиск в строке

В классе string предусмотрено несколько функций-членов, которые осуществляют поиск. Это, например, такие функции, как find() и rfind(). Рассмотрим прототипы самых употребительных версий этих функций.

size_type find(const string &strob, size_type start=0) const;

size_type rfind(const string &strob, size_type start=npos) const;

Функция find(), начиная с позиции start, просматривает вызывающую строку на предмет поиска первого вхождения строки, заданной параметром strob. Если поиск успешен, функция find() возвращает индекс, по которому в вызывающей строке было обнаружено совпадение. Если совпадения не обнаружено, возвращается значение npos. Функция rfind() выполняет то же действие, но с конца. Начиная с позиции start, она просматривает вызывающую строку в обратном направлении на предмет поиска первого вхождения строки, заданной параметром strob (т.е. она находит в вызывающей строке последнее вхождение строки, заданной параметром strob). Если поиск прошел удачно, функция rfind() возвращает индекс, по которому в вызывающей строке было обнаружено совпадение. Если совпадения не обнаружено, возвращается значение npos.