std::basic_string<CharT,Traits,Allocator>::replace_with_range - cppreference.com

From cppreference.com

template<container-compatible-range<CharT>R>constexprstd::basic_string&replace_with_range(const_iteratorfirst,const_iteratorlast,R&&rg);(since C++23)Replaces the characters in the range [first, last) with the characters from the range rg.

Equivalent to

returnreplace(first,last,std::basic_string(std::from_range,std::forward<R>(rg),get_allocator()));Parameters

Return value

*this

Complexity

Linear in size of rg.

Exceptions

If the operation would cause

size()

to exceed

max_size()

, throws

std::length_error

.

If an exception is thrown for any reason, this function has no effect (

strong exception safety guarantee

).

Notes

Feature-test

macroValueStdFeature

__cpp_lib_containers_ranges

202202L

(C++23)member functions that accept

container compatible range

Example

Run this code

#include<algorithm>#include<cassert>#include<forward_list>#include<iterator>#include<string>intmain(){usingnamespacestd::literals;autos{"Today is today!"s};constexprautotoday{"today"sv};constexprautotomorrow{"tomorrow's yesterday"sv};std::forward_list<char>rg;std::ranges::reverse_copy(tomorrow,std::front_inserter(rg));constautopos{s.rfind(today)};assert(pos!=s.npos);constautofirst{std::next(s.begin(),pos)};constautolast{std::next(first,today.length())};#ifdef __cpp_lib_containers_rangess.replace_range(first,last,rg);#elses.replace(first,last,rg.cbegin(),rg.cend());#endifassert("Today is tomorrow's yesterday!"==s);}See also

replaces specified portion of a string
(public member function)

[edit]