:relfileprefix: ../../../
[#boost-urls-segments_encoded_ref-replace-08]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::xref:boost/urls/segments_encoded_ref.adoc[pass:[segments_encoded_ref]]::replace


Replace segments


=== Synopsis

Declared in header `<https://www.github.com/boostorg/url/blob/develop/include/boost/url/segments_encoded_ref.hpp#L671[boost/url/segments_encoded_ref.hpp,window=blank_]>`

[source,cpp,subs="verbatim,macros,-callouts"]
----
xref:boost/urls/segments_encoded_base/iterator.adoc[iterator]
replace(
    xref:boost/urls/segments_encoded_base/iterator.adoc[iterator] from,
    xref:boost/urls/segments_encoded_base/iterator.adoc[iterator] to,
    std::initializer_list<xref:boost/urls/pct_string_view.adoc[pct_string_view]> init);
----

=== Description


This function replaces a range of
segments with a list of segments in
an initializer list.
Reserved characters in the list are
automatically escaped.
Escapes in the list are preserved.



All iterators that are equal to
`from` or come after are invalidated.

=== None of the character buffers referenced

by the list may overlap the character
buffer of the underlying url, or else
the behavior is undefined.

=== Linear in `init.size() + this-&gt;url().encoded_resouce().size()`.

=== Strong guarantee.

Calls to allocate may throw.
Exceptions thrown on invalid input.



=== Exceptions

|===
| Name | Thrown on

| `The`
| 
list contains an invalid percent-encoding.

|===


=== Return Value


An iterator to the first
segment inserted, or one past `to` if
`init.size() &equals;&equals; 0`.



=== Parameters

|===
| Name | Description 

| *from,*
| 
to The range of segments to replace.

| *init*
| 
The list of segments to assign.

|===




