std::basic_string<CharT,Traits,Allocator>::replace_with_range - cppreference.com (original) (raw)

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

Equivalent to

Contents

[edit] Parameters

[edit] Return value

*this

[edit] Complexity

Linear in size of rg.

[edit] 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).

[edit] Notes

Feature-test macro Value Std Feature
__cpp_lib_containers_ranges 202202L (C++23) member functions that accept container compatible range

[edit] Example

#include #include #include #include #include   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 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); }

[edit] See also

| | replaces specified portion of a string (public member function) [edit] | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |