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

basic_string<CharT,Traits,Allocator>::replace

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
Итераторы
Ёмкость
Операции
basic_string::replace
Поиск
Константы
Правила вывода (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)
Вспомогательные классы
 
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() + posbegin() + std::min(pos + count, size())) или [firstlast) заданными символами.

1,2) Эти символы заменяются на str.
3) Эти символы заменяются подстрокой [pos2std::min(pos2 + count2, str.size())) из str.
4,5) Эти символы заменяются символами из диапазона [cstrcstr + count2).
Если [cstrcstr + count2) не является действительным диапазоном, поведение не определено.
6,7) Эти символы заменяются символами из диапазона [cstrcstr + Traits::length(cstr)).
8,9) Эти символы заменяются count2 копиями ch.
10) Эти символы заменяются символами из диапазона [first2last2) как если бы это было сделано с помощью 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) или [firstlast) не является действительным диапазоном, поведение не определено.

Содержание

[править] Параметры

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