Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::basic_string<CharT,Traits,Allocator>::replace_with_range

      From cppreference.com
      <cpp‎ |string‎ |basic string
       
       
       
      std::basic_string
       
      template<container-compatible-range<CharT> R>

      constexprstd::basic_string& replace_with_range( const_iterator first,
                                                       const_iterator last,

                                                       R&& rg);
      (since C++23)

      Replaces the characters in the range[firstlast) with the characters from the rangerg.

      Equivalent to

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

      Contents

      [edit]Parameters

      first, last - range of characters that is going to be replaced
      rg - acontainer compatible range

      [edit]Return value

      *this

      [edit]Complexity

      Linear in size ofrg.

      [edit]Exceptions

      If the operation would causesize() to exceedmax_size(), throwsstd::length_error.

      If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_containers_ranges202202L(C++23)member functions that acceptcontainer compatible range

      [edit]Example

      Run this code
      #include <algorithm>#include <cassert>#include <forward_list>#include <iterator>#include <string> int main(){usingnamespace std::literals; auto s{"Today is today!"s};constexprauto today{"today"sv};constexprauto tomorrow{"tomorrow's yesterday"sv};std::forward_list<char> rg;    std::ranges::reverse_copy(tomorrow,std::front_inserter(rg)); constauto pos{s.rfind(today)};assert(pos!= s.npos);constauto first{std::next(s.begin(), pos)};constauto 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]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/basic_string/replace_with_range&oldid=161502"

      [8]ページ先頭

      ©2009-2025 Movatter.jp