Замена в строке

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

  • swap() — меняет содержимое двух строк местами. Прототип метода:
void swap(basic_string &str) noexcept;

Пример:

std::string str1("12345"), str2("67890");
str1.swap(str2);
std::cout << str1 << std::endl; // 67890
std::cout << str2 << std::endl; // 12345
  • replace() — заменяет фрагмент строки отдельным символом или подстрокой. Если вставляемая подстрока меньше фрагмента, то остальные символы сдвигаются к началу строки, а если больше, то раздвигаются таким образом, чтобы вместить всю вставляемую подстроку. Прототипы метода:
basic_string &replace(size_type pos, size_type len,
                      size_type count, _CharT ch);
basic_string &replace(const_iterator first, const_iterator last,
                      size_type count, _CharT ch);
basic_string &replace(size_type pos, size_type len,
                      const _CharT *str);
basic_string &replace(size_type pos, size_type len,
                      const _CharT *str, size_type count);
basic_string &replace(const_iterator first, const_iterator last,
                      const _CharT *str);
basic_string &replace(const_iterator first, const_iterator last,
                      const _CharT *str, size_type count);
basic_string &replace(size_type pos, size_type len,
                      const basic_string &str);
basic_string &replace(size_type pos, size_type len,
                      const basic_string &str, size_type pos2,
                      size_type count=npos);
basic_string &replace(const_iterator first, const_iterator last,
                      const basic_string &str);
template<class _InputIterator>
   basic_string &replace(
         const_iterator first, const_iterator last,
         _InputIterator first2, _InputIterator last2);
basic_string &replace(const_iterator first, const_iterator last,
                      initializer_list<_CharT> list);

Первый прототип вставляет count символов ch вместо фрагмента длиной len, начинающего с индекса pos:

std::string str("12345");
str.replace(0, 3, 4, '*');
std::cout << str << std::endl;         // ****45

Второй прототип вставляет count символов ch вместо фрагмента, ограниченного итераторами first и last:

std::string str("12345");
str.replace(str.begin(), str.begin() + 3,
             3, '+');
std::cout << str << std::endl;         // +++45

Третий прототип позволяет вставить C-строку str целиком вместо фрагмента длиной len, начинающегося с индекса pos, а прототип 4 — только count первых символов из C-строки str:

std::string str("12345");
char str2[] = "abcd";
str.replace(0, 4, str2);
std::cout << str << std::endl;         // abcd5
str.replace(0, 4, str2, 3);
std::cout << str << std::endl;         // abc5

Пятый прототип вставляет C-строку str целиком вместо фрагмента, ограниченного итераторами first и last, а шестой прототип — только count первых символов из C-строки str:

std::string str("12345");
char str2[] = "abcd";
str.replace(str.begin(), str.begin() + 4, str2);
std::cout << str << std::endl;         // abcd5
str.replace(str.begin(), str.begin() + 4, str2, 3);
std::cout << str << std::endl;         // abc5

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

std::string str1("12345"), str2("67890");
str1.replace(0, 3, str2);
std::cout << str1 << std::endl;         // 6789045
str1.replace(0, 5, str2, 1, 2);
std::cout << str1 << std::endl;         // 7845
str1.replace(2, 2, str2, 3);
std::cout << str1 << std::endl;         // 7890

Девятый прототип вставляет объект класса basic_string целиком вместо фрагмента, ограниченного итераторами first и last:

std::string str1("12345"), str2("67890");
str1.replace(str1.begin(), str1.begin() + 3, str2);
std::cout << str1 << std::endl;         // 6789045

Десятый прототип позволяет указать начальную first и конечную last позиции заменяемого фрагмента с помощью итераторов. Вставляемая подстрока задается с помощью итераторов first2 и last2. Пример:

std::string str1("12345"), str2("67890");
str1.replace(str1.begin(), str1.end(),
             str2.begin(), str2.end());
std::cout << str1 << std::endl;         // 67890

Одиннадцатый прототип позволяет указать начальную first и конечную last позиции заменяемого фрагмента с помощью итераторов. Вставляемые символы задаются с помощью списка инициализации list. Пример:

std::string str("12345");
std::initializer_list<char> list = {'6', '7', '8'};
str.replace(str.begin(), str.end(),list);
std::cout << str << std::endl;         // 678

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

Помощь сайту

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

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