std::basic_string<CharT,Traits,Allocator>::replace — cppreference.com
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
|
|
(1) | (constexpr начиная с C++20) |
|
|
(2) | (constexpr начиная с C++20) |
| (3) | ||
|
|
(до C++14) | |
|
|
(начиная с C++14) (constexpr начиная с C++20) |
|
|
|
(4) | (constexpr начиная с C++20) |
|
|
(5) | (constexpr начиная с C++20) |
|
|
(6) | (constexpr начиная с C++20) |
|
|
(7) | (constexpr начиная с C++20) |
|
|
(8) | (constexpr начиная с C++20) |
|
|
(9) | (constexpr начиная с C++20) |
|
|
(10) | (constexpr начиная с C++20) |
|
|
(11) | (начиная с C++11) (constexpr начиная с C++20) |
|
|
(12) | (начиная с C++17) (constexpr начиная с C++20) |
|
|
(13) | (начиная с C++17) (constexpr начиная с C++20) |
|
|
(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) в некоторых случаях вызывали двусмысленность |
исправлено, сделав их шаблонами |