На этом шаге мы перечислим методы, осуществляющие вставку символов в строку.
Для выполнения вставки символов используются следующие методы:
string& string::insert (size_type idx, const string& str)
Возвращает *this.
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
string& string::insert (size_type idx, const string& str,
size_type str_idx, size_type str_num)
Возвращает *this.
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Если выполняется условие str_idx>str.size(), генерируется исключение out_of_ range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
string& string::insert (size_type idx, const char* cstr)
Возвращает *this.
Аргумент cstr не должен содержать NULL-указатель.
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
string& string::insert (size_type idx, const char* chars, size_type chars_len)
Возвращает *this.
Символьный массив chars должен содержать не менее chars_len символов, которые могут иметь произвольные значения (символ \0 не имеет особой интерпретации).
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
string& string::insert (size_type idx, size_type num, char c) void string::insert (iterator pos, size_type num, char c)
Первая форма вставляет новые символы так, чтобы они начинались с индекса idx.
Вторая форма вставляет новые символы перед символом, на который ссылается итератор pos.
Учтите, что перегрузка этих двух функций приводит к потенциальной неоднозначности. При передаче нуля во втором аргументе значение может интерпретироваться как индекс (обычно преобразование к unsigned) или как итератор (обычно преобразование к char*). Следовательно, в таких ситуациях индекс должен передаваться с точным указанием типа. Пример:
std::string s; . . . s.insert(0,1,' '); //ОШИБКА: неоднозначность s.insert((std::string::size_type)0,1,' '); //OK
Обе формы возвращают *this.
Если выполняется условие idx>size(), обе формы генерируют исключение out_of_range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
iterator string::insert (iterator pos, char c)
Возвращает позицию вставленного символа.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
void string::insert (iterator pos, InputIterator beg, InputIterator end)
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
На следующем шаге мы рассмотрим удаление символов.