std::basic_string<CharT,Traits,Allocator>::replace
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) заданными символами.
str.[pos2, std::min(pos2 + count2, str.size())) из str.[cstr, cstr + count2).[cstr, cstr + count2) не является допустимым диапазоном, поведение не определено.[cstr, cstr + Traits::length(cstr)).count2 копиями ch.[first2, last2) как если бы через replace(first, last, basic_string(first2, last2, get_allocator())).ilist.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.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 .
Исключения
Если операция приведёт к тому, что
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) вызывали неоднозначность в некоторых случаях | устранено путем преобразования их в шаблоны |
См. также
(C++23) |
заменяет указанную часть строки диапазоном символов (public-элемент функции) |
(C++11) |
заменяет вхождения регулярного выражения форматированным замещающим текстом (шаблон функции) |
| заменяет все значения, удовлетворяющие определённым критериям, другим значением (шаблон функции & алгоритм, функциональный объект) | |
(C++20)(C++20) |