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) |
| (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.
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.
Исключения
Если операция приведет к size() > max_size(), бросает std::length_error.
Если брошено исключение по какой-либо причине, эти функции не имеют эффекта (гарантия сильной устойчивости к исключениям).
Пример
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение при публикации | Корректное поведение |
|---|---|---|---|
| LWG 847 | C++98 | не было гарантии устойчивости к исключениям | добавлена гарантия сильной устойчивости к исключениям |
| LWG 1323 | C++98 | типы first и last были iterator |
изменено на const_iterator |
| LWG 2946 | C++17 | перегрузки (12,13) в некоторых случаях вызывали неоднозначность | избегается путём их шаблонизации |
См. также
|
(C++23) |
заменяет указанную часть строки диапазоном символов (публичный член-функция) |
|
(C++11) |
заменяет вхождения регулярного выражения отформатированным текстом замены (шаблонная функция) |
| заменяет все значения, удовлетворяющие определенным критериям, другим значением (шаблонная функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string/replace