На этом шаге мы перечислим методы, осуществляющие вставку символов в строку.
Для выполнения вставки символов используются следующие методы:
string& string::insert (size_type idx, const string& str)
Вставляет символы из str так, что новые символы начинаются с индекса idx.
Возвращает *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)
Вставляет не более str_num символов из str, начиная с индекса str_idx, так, что новые символы начинаются с индекса idx.
Возвращает *this.
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Если выполняется условие str_idx>str.size(), генерируется исключение out_of_ range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
string& string::insert (size_type idx, const char* cstr)
Вставляет символы С-строки cstr так, что новые символы начинаются с индекса idx.
Возвращает *this.
Аргумент cstr не должен содержать NULL-указатель.
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length_error.
string& string::insert (size_type idx, const char* chars, size_type chars_len)
Вставляет chars_len символов из символьного массива chars так, что новые символы начинаются с индекса idx.
Возвращает *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)
Обе формы вставляют num экземпляров символа с в позицию, заданную индексом idx или итератором pos соответственно.
Первая форма вставляет новые символы так, чтобы они начинались с индекса 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)
Вставляет копию символа с перед символом, на который ссылается итератор pos.
Возвращает позицию вставленного символа.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение
length_error.
void string::insert (iterator pos, InputIterator beg, InputIterator end)
Вставляет все символы интервала [beg,end) перед символом, на который ссылается итератор pos.
Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение
length_error.
На следующем шаге мы рассмотрим удаление символов.