Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

url_base::set_encoded_host
PrevUpHomeNext

Set the host.

Synopsis
url_base&
set_encoded_host(
    pct_string_view s);
Description

Depending on the contents of the passed string, this function sets the host:

  • If the string is a valid IPv4 address, then the host is set to the address. The host type is host_type::ipv4.
  • If the string is a valid IPv6 address enclosed in square brackets, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture address enclosed in square brackets, then the host is set to that address. The host type is host_type::ipvfuture.
  • Otherwise, the host name is set to the string. This string can contain percent escapes, or can be empty. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result. The host type is host_type::name.

In all cases, when this function returns, the URL contains an authority.

Example
assert( url( "http://www.example.com" ).set_host( "127.0.0.1" ).buffer() == "http://127.0.0.1" );
Postconditions
this->has_authority() == true
Complexity

Linear in this->size() + s.size().

Exception Safety

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

Exceptions

Type

Thrown On

system_error

s contains an invalid percent-encoding.

Parameters

Name

Description

s

The string to set.

BNF
host        = IP-literal / IPv4address / reg-name

IP-literal  = "[" ( IPv6address / IPvFuture  ) "]"

reg-name    = *( unreserved / pct-encoded / "-" / ".")
Specification
See Also

set_encoded_host_address, set_encoded_host_name, set_host, set_host_address, set_host_ipv4, set_host_ipv6, set_host_ipvfuture, set_host_name.


PrevUpHomeNext