Пространства имён
Варианты
Действия

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

Материал из cppreference.com
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
Итераторы
Ёмкость
Операции
Поиск
Константы
Правила вывода (C++17)
Функции, не являющиеся элементами
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
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)
(3)
basic_string& replace( size_type pos, size_type count, const basic_string& str, size_type pos2, size_type count2 );
(до 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.

Если по какой-либо причине генерируется исключение, эти функции не имеют эффекта (строгая гарантия безопасности исключений).

Пример

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

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

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

Смотрите также

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