Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>::replace

От ru.cppreference.net
 
 
 
std::basic_string
 
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str );
(1) (constexpr начиная с C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const basic_string& str );
(2) (constexpr начиная с C++20)
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str,
                       size_type pos2, size_type count2 );
(3) (до C++14)
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str,
                       size_type pos2, size_type count2 = npos );
(начиная с C++14)
(constexpr начиная с C++20)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr, size_type count2 );
(4) (constexpr начиная с C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr, size_type count2 );
(5) (constexpr начиная с C++20)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr );
(6) (constexpr начиная с C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr );
(7) (constexpr начиная с C++20)
basic_string& replace( size_type pos, size_type count,
                       size_type count2, CharT ch );
(8) (constexpr начиная с C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       size_type count2, CharT ch );
(9) (constexpr начиная с C++20)
template< class InputIt >
basic_string& replace( const_iterator first, const_iterator last,
                       InputIt first2, InputIt last2 );
(10) (constexpr начиная с C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       std::initializer_list<CharT> ilist );
(11) (начиная с C++11)
(constexpr начиная с C++20)
template< class StringViewLike >
basic_string& replace( size_type pos, size_type count,
                       const StringViewLike& t );
(12) (начиная с C++17)
(constexpr начиная с C++20)
template< class StringViewLike >
basic_string& replace( const_iterator first, const_iterator last,
                       const StringViewLike& t );
(13) (начиная с C++17)
(constexpr начиная с C++20)
template< class StringViewLike >
basic_string& replace( size_type pos, size_type count,
                       const StringViewLike& t,
                       size_type pos2, size_type count2 = npos );
(14) (начиная с C++17)
(constexpr начиная с C++20)

Заменяет символы в диапазоне [begin() + pos, begin() + std::min(pos + count, size())) или [first, last) заданными символами.

1,2) Эти символы заменяются на str.
3) Эти символы заменяются подстрокой [pos2, std::min(pos2 + count2, str.size())) из str.
4,5) Эти символы заменяются символами из диапазона [cstr, cstr + count2).
Если [cstr, cstr + count2) не является допустимым диапазоном, поведение не определено.
6,7) Эти символы заменяются символами из диапазона [cstr, cstr + Traits::length(cstr)).
8,9) Эти символы заменяются count2 копиями ch.
10) Эти символы заменяются символами из диапазона [first2, last2) как если бы через replace(first, last, basic_string(first2, last2, get_allocator())).
11) Эти символы заменяются символами из ilist.
12,13) Неявно преобразует t в строковое представление sv как если бы через std::basic_string_view<CharT, Traits> sv = t;, затем эти символы заменяются символами из sv.
Эти перегрузки участвуют в разрешении перегрузки только если std::is_convertible_v<const StringViewLike&,
std::basic_string_view<CharT, Traits>>
является true и std::is_convertible_v<const StringViewLike&, const CharT*> является false.
14) Неявно преобразует t в строковое представление sv как если бы через std::basic_string_view<CharT, Traits> sv = t;, затем эти символы заменяются символами из подпредставления sv.substr(pos2, count2).
Эта перегрузка участвует в разрешении перегрузки только если std::is_convertible_v<const StringViewLike&,
std::basic_string_view<CharT, Traits>>
является true и std::is_convertible_v<const StringViewLike&, const CharT*> является false.

Если [begin(), first) или [first, last) не является допустимым диапазоном, поведение не определено.

Параметры

pos - начало подстроки, которая будет заменена
count - длина подстроки, которая будет заменена
first, last - диапазон символов, который будет заменен
str - строка для замены
pos2 - начало подстроки для замены
count2 - количество символов для замены
cstr - указатель на строку символов для замены
ch - символьное значение для замены
first2, last2 - диапазон символов для замены
ilist - список инициализации с символами для замены
t - объект (преобразуемый в std::basic_string_view ) с символами для замены
Требования к типам
-
InputIt должен удовлетворять требованиям LegacyInputIterator .

Возвращаемое значение

* this .

Исключения

1) Выбрасывает std::out_of_range , если pos > size ( ) .
3) Выбрасывает std::out_of_range если pos > size ( ) или pos2 > str. size ( ) .
4,6,8) Выбрасывает std::out_of_range если pos > size ( ) .
12,14) Выбрасывает std::out_of_range если pos > size ( ) .

Если операция приведёт к тому, что size() превысит max_size() , выбрасывается std::length_error .

Если исключение выбрасывается по любой причине, эти функции не оказывают никакого эффекта ( strong exception safety guarantee ).

Пример

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 847 C++98 гарантия безопасности исключений отсутствовала добавлена строгая гарантия безопасности исключений
LWG 1323 C++98 типы first и last были iterator изменены на const_iterator
LWG 2946 C++17 перегрузки (12,13) вызывали неоднозначность в некоторых случаях устранено путем преобразования их в шаблоны

См. также

заменяет указанную часть строки диапазоном символов
(public-элемент функции)
заменяет вхождения регулярного выражения форматированным замещающим текстом
(шаблон функции)
заменяет все значения, удовлетворяющие определённым критериям, другим значением
(шаблон функции & алгоритм, функциональный объект)