Вставляти символи/рядки в std::string можна за допомогою функції insert().
string& string::insert(size_type index, const string& str)
string& string::insert(size_type index, const char* str)
Обидві функції вставляють символи/рядки, починаючи з певного index std::string.
Повертають прихований вказівник *this, що дозволяє «зв’язувати» об’єкти.
Генерують виняток out_of_range, якщо index некоректний.
Генерують виняток length_error, якщо результат перевищує максимально допустиму кількість символів.
У другій версії функції insert() str не повинен бути NULL.
Наприклад:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <string> int main() { std::string sString("bbb"); std::cout << sString << std::endl; sString.insert(2, std::string("mmm")); std::cout << sString << std::endl; sString.insert(5, "aaa"); std::cout << sString << std::endl; } |
Результат:
bbb
bbmmmb
bbmmmaaab
А ось версія функції insert(), яка дозволяє вставити з вказаного index std::string підрядок.
string& string::insert(size_type index, const string& str, size_type startindex, size_type num)
Ця функція вставляє з вказаного index std::string вказану кількість символів (num) рядка str, починаючи зі startindex.
Повертає прихований вказівник *this, що дозволяє «зв’язувати» об’єкти.
Генерує виняток out_of_range, якщо index або startindex некоректні.
Генерує виняток length_error, якщо результат перевищує максимально допустиму кількість символів.
Наприклад:
|
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <string> int main() { std::string sString("bbb"); const std::string sInsert("012345"); sString.insert(1, sInsert, 2, 4); // вставляємо підрядок sInsert довжиною 4, починаючи з символа під індексом 2, в рядок sString, починаючи з індекса 1 std::cout << sString << std::endl; } |
Результат:
b2345bb
А ось версія функції insert(), за допомогою якої в std::string можна вставити частину рядка C-style.
string& string::insert(size_type index, const char* str, size_type len)
Ця функція вставляє з вказаного index std::string вказану кількість символів (len) рядка C-style str.
Повертає прихований вказівник *this, що дозволяє «зв’язувати» об’єкти.
Генерує виняток out_of_range, якщо index некоректний.
Генерує виняток length_error, якщо результат перевищує максимально допустиму кількість символів.
Ігнорує спеціальні символи (такі як ").
Наприклад:
|
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <string> int main() { std::string sString("bbb"); sString.insert(2, "acdef", 4); std::cout << sString << std::endl; } |
Результат:
bbacdeb
А ось версія функції insert(), яка вставляє в std::string один і той же символ кілька разів.
string& string::insert(size_type index, size_type num, char c)
Ця функція вставляє з певного index std::string вказану кількість входжень (num) символа c.
Повертає прихований вказівник *this, що дозволяє «зв’язувати» об’єкти.
Генерує виняток out_of_range, якщо index некоректний.
Генерує виняток length_error, якщо результат перевищує максимально допустиму кількість символів.
Наприклад:
|
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <string> int main() { std::string sString("bbb"); sString.insert(2, 3, 'a'); std::cout << sString << std::endl; } |
Результат:
bbaaab
І, нарешті, функція insert() має три різні версії, які працюють з ітераторами.
void insert(iterator it, size_type num, char c)
iterator string::insert(iterator it, char c)
void string::insert(iterator it, InputIterator begin, InputIterator end)
Перша версія функції вставляє в std::string вказану кількість входжень (num) символа c перед ітератором it.
Друга версія функції вставляє в std::string одиночний символ c перед ітератором it і повертає ітератор в позицію вставленого символа.
Третя версія функції вставляє в std::string всі символи діапазону (begin, end) перед ітератором it.
Всі функції генерують виняток length_error, якщо результат перевищує максимально допустиму кількість символів.
