home | help
std::basic_...e_with_range(3)  C++ Standard Libary std::basic_...e_with_range(3)

NAME
     std::basic_string::replace_with_range	  -	  std::basic_string::re-
     place_with_range

Synopsis
	template< container-compatible-range<CharT> R >

	constexpr std::basic_string& replace_with_range( const_iterator
	first,
     (since C++23)
							 const_iterator last,

							 R&& rg );

	Replaces the characters in the range [first, last) with  the  characters
     from the
	range rg.

	Equivalent to

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

Parameters
	first, last - range of characters that is going to be replaced
	rg	    - a container compatible range

Return value
	*this

Complexity
	Linear in size of rg.

Exceptions
	If   the   operation   would  result  in  size()  >  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 macro	     Value    Std		    Feature
	__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>

      int main()
      {
	  using namespace std::literals;

	  auto s{"Today is today!"s};
	  constexpr auto today{"today"sv};
	  constexpr auto tomorrow{"tomorrow's yesterday"sv};
	  std::forward_list<char> rg;
	  std::ranges::reverse_copy(tomorrow, std::front_inserter(rg));

	  const auto pos{s.rfind(today)};
	  assert(pos != s.npos);
	  const auto first{std::next(s.begin(), pos)};
	  const auto last{std::next(first, today.length())};

      #ifdef __cpp_lib_containers_ranges
	  s.replace_range(first, last, rg);
      #else
	  s.replace(first, last, rg.cbegin(), rg.cend());
      #endif

	  assert("Today is tomorrow's yesterday!" == s);
      }

See also
	replace replaces specified portion of a string
		(public member function)

http://cppreference.com 	   2024.06.10	   std::basic_...e_with_range(3)

home | help