Добавление и вставка символов

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

  • push_back() — добавляет символ ch в конец строки. Прототип метода:
void push_back(_CharT ch);

Пример:

std::string str("String");
str.push_back('1');
std::cout << str << std::endl;   // String1
std::wstring wstr(L"String");
wstr.push_back(L'2');
std::wcout << wstr << std::endl; // String2
  • append() — добавляет символы и строки в конец исходной строки. Прототипы метода:
basic_string &append(size_type count, _CharT ch);
basic_string &append(const _CharT *str);
basic_string &append(const _CharT *str, size_type count);
basic_string &append(const basic_string &str);
basic_string &append(const basic_string &str, size_type pos,
                     size_type count=npos);
template<class _InputIterator>
   basic_string &append(_InputIterator first,
                        _InputIterator last);
basic_string &append(initializer_list<_CharT> list);

Первый прототип добавляет count символов ch в конец строки:

std::string str("A");
str.append(5, '*');
std::cout << str << std::endl;   // A*****

Второй прототип позволяет добавить C-строку (или L-строку) целиком, а третий прототип — только count первых символов из C-строки (или L-строки) str:

std::string str("A");
char str2[] = "BC";
str.append(str2);
std::cout << str << std::endl;   // ABC
str.append("DEF", 2);
std::cout << str << std::endl;   // ABCDE
std::wstring wstr(L"A");
wstr.append(L"BCDEF", 3);
std::wcout << wstr << std::endl; // ABCD

Четвертый прототип позволяет добавить объект класса basic_string целиком, а пятый прототип — только count символов, начиная с индекса pos. Если параметр count не задан, то добавляется фрагмент от pos до конца строки:

std::string str("A"), str2("BC"), str3("DEF");
str.append(str2);
std::cout << str << std::endl;   // ABC
str.append(str3, 0, 1);
std::cout << str << std::endl;   // ABCD
str.append(str3, 1);
std::cout << str << std::endl;   // ABCDEF
std::wstring wstr(L"A"), wstr2(L"BCDEF");
wstr.append(wstr2, 0, 3);
std::wcout << wstr << std::endl; // ABCD

Шестой прототип позволяет задать диапазон от first до last (не включая этот символ) с помощью итераторов:

std::string str("A"), str2("BCDEF");
str.append(str2.begin(), str2.begin() + 3);
std::cout << str << std::endl;   // ABCD

Седьмой прототип добавляет символы из списка инициализации:

std::string str("A");
std::initializer_list<char> list = {'B', 'C', 'D'};
str.append(list);
std::cout << str << std::endl;   // ABCD
  • insert() — вставляет символы и строки в позицию указанную индексом или итератором. Остальные элементы сдвигаются к концу строки. Прототипы метода:
basic_string &insert(size_type pos, size_type count, _CharT ch);
iterator insert(const_iterator p, _CharT ch);
iterator insert(const_iterator p, size_type count,
                _CharT ch);
basic_string &insert(size_type pos, const _CharT *str);
basic_string &insert(size_type pos, const _CharT *str,
                     size_type count);
basic_string &insert(size_type pos, const basic_string &str);
basic_string &insert(size_type pos, const basic_string &str,
                     size_type pos2, size_type count=npos);
template<class _InputIterator>
   iterator insert(iterator p, _InputIterator first,
                   _InputIterator last);
void insert(iterator p, initializer_list<_CharT> list);

Первый прототип вставляет count символов ch в позицию с индексом pos:

std::string str("A");
str.insert(0, 3, '*');           // В начало строки
std::cout << str << std::endl;   // ***A
str.insert(str.size(), 3, '+');  // В конец строки
std::cout << str << std::endl;   // ***A+++

Второй прототип вставляет символ ch в позицию на которую указывает константный итератор p. Третий прототип вставляет count символов ch в позицию на которую указывает константный итератор p. Обратите внимание: до стандарта C++11 третий прототип ничего не возвращал и итератор p не был константным. Пример:

std::string str("A");
str.insert(str.begin(), '*');    // В начало строки
std::cout << str << std::endl;   // *A
str.insert(str.end(), 3, '+');   // В конец строки
std::cout << str << std::endl;   // *A+++

Четвертый прототип позволяет вставить C-строку (или L-строку) str целиком в позицию с индексом pos, а пятый прототип — только count первых символов из C-строки (или L-строки) str. Пример:

std::string str("CDE");
str.insert(0, "AB");             // В начало строки
std::cout << str << std::endl;   // ABCDE
str.insert(1, "12345", 3);
std::cout << str << std::endl;   // A123BCDE

Шестой прототип позволяет вставить объект класса basic_string целиком в позицию с индексом pos, а седьмой прототип — только count символов, начиная с индекса pos2. Если параметр count не задан, то добавляется фрагмент от pos2 до конца строки. Пример:

std::string str("CDE"), str2("AB"), str3("12345");
str.insert(0, str2);             // В начало строки
std::cout << str << std::endl;   // ABCDE
str.insert(1, str3, 0, 3);
std::cout << str << std::endl;   // A123BCDE
str.insert(str.size(), str3, 3); // В конец строки
std::cout << str << std::endl;   // A123BCDE45

Восьмой прототип вставляет фрагмент, ограниченный итераторами first и last (не включая этот символ), в позицию на которую указывает итератор p:

std::string str("ABC"), str2("12345");
str.insert(str.begin(), str2.begin(),
           str2.begin() + 3);    // В начало строки
std::cout << str << std::endl;   // 123ABC
str.insert(str.end(), str2.begin(),
           str2.end());          // В конец строки
std::cout << str << std::endl;   // 123ABC12345

Девятый прототип вставляет символы из списка инициализации в позицию на которую указывает итератор p. Пример:

std::string str("A");
std::initializer_list<char> list = {'B', 'C', 'D'};
str.insert(str.end(), list);     // В конец строки
std::cout << str << std::endl;   // ABCD

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов