Модифицирующие операции. Вставка символов

   
На этом шаге мы перечислим методы, осуществляющие вставку символов в строку.

   
Для выполнения вставки символов используются следующие методы:

  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.

   
На следующем шаге мы рассмотрим удаление символов.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий