std::basic_string<CharT,Traits,Allocator>::replace
Материал из cppreference.com
<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).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) в некоторых случаях вызывали двусмысленность |
исправлено, сделав их шаблонами |
Смотрите также
(C++23) |
заменяет указанную часть строки диапазоном символов (public функция-элемент) |
(C++11) |
заменяет вхождения регулярного выражения форматированным замещающим текстом (шаблон функции) |
| заменяет другим значением все значения, соответствующие определённым критериям (шаблон функции) |