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
to exceed
, throws
.
If an exception is thrown for any reason, this function has no effect (
strong exception safety guarantee
).
Notes
macroValueStdFeature
(C++23)member functions that accept
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)