Reference

Namespaces

Name
boost

boost namespace

Namespaces

Name
urls

boost::urls namespace

Namespaces

Name
error_types
grammar
string_token

Types

Name Description
authority_view A non-owning reference to a valid authority
decode_view A reference to a valid, percent-encoded string
encoding_opts Percent-encoding options
ignore_case_param An optional parameter to determine case-sensitivity
ipv4_address An IP version 4 style address.
ipv6_address An IP version 6 style address.
no_value_t The type of no_value
param A query parameter
param_pct_view A view of a percent-encoded query parameter
param_view A view of a query parameter
params_base Common functionality for query parameter containers
params_encoded_base Common functionality for containers
params_encoded_ref A view representing query parameters in a URL
params_encoded_view A view representing query parameters in a URL
params_ref A view representing query parameters in a URL
params_view A view representing query parameters in a URL
pct_string_view A reference to a valid percent-encoded string
segments_base Common functionality for containers
segments_encoded_base Common functionality for containers
segments_encoded_ref A view representing path segments in a URL
segments_encoded_view A view representing path segments in a URL
segments_ref A view representing path segments in a URL
segments_view A view representing path segments in a URL
static_url A modifiable container for a URL.
static_url_base Common implementation for all static URLs
url A modifiable container for a URL.
url_base Common functionality for containers
url_view A non-owning reference to a valid URL
url_view_base Common functionality for containers
format_arg A temporary reference to a formatting argument
named_arg A temporary reference to a named formatting argument
optional The type of optional used by the library
string_view The type of string_view used by the library
variant The type of variant used by the library

Enums

Name Description
error Error codes returned the library
host_type Identifies the type of host in a URL.
scheme Identifies a known URL scheme

Functions

Name Description
arg Designate a named argument for a replacement field
default_port Return the default port for a known scheme
encode encode overloads
encoded_size Return the buffer size needed for percent-encoding
format Format arguments into a URL
format_to Format arguments into a URL
make_pct_string_view Return a valid percent-encoded string
parse_absolute_uri Return a reference to a parsed URL string
parse_authority Parse an authority
parse_ipv4_address Return an IPv4 address from an IP address string in dotted decimal form
parse_ipv6_address Parse a string containing an IPv6 address.
parse_origin_form Return a reference to a parsed URL string
parse_path Parse a string and return an encoded segment view
parse_query Parse a string and return an encoded params view
parse_relative_ref Return a reference to a parsed URL string
parse_uri Return a reference to a parsed URL string
parse_uri_reference Return a reference to a parsed URL string
pct_encoded_rule Rule for a string with percent-encoded escapes
resolve Resolve a URL reference against a base URL
string_to_scheme Return the known scheme for a non-normalized string, if known
swap Swap
to_string Return the normalized string for a known scheme
operator<< Stream insertion operators
operator== Equality operators
operator!= Inequality operators
operator< Less-than operators
operator<= Less-than-or-equal operators
operator> Greater-than operators
operator>= Greater-than-or-equal operators

Variables

Name Description
absolute_uri_rule Rule for absolute-URI
authority_rule Rule for authority
gen_delim_chars The gen-delims character set
ignore_case Ignore case when comparing
ipv4_address_rule Rule for an IP version 4 style address
ipv6_address_rule Rule for An IP version 6 style address
no_value Constant indicating no value in a param
origin_form_rule Rule for origin-form
pchars The path character set
query_rule Rule for a query string
relative_ref_rule Rule for relative-ref
reserved_chars The reserved character set
sub_delim_chars The sub-delims character set
unreserved_chars The unreserved character set
uri_reference_rule Rule for URI-reference
uri_rule Rule for URI

Using Namespace Directives

Name
error_types

boost::urls::error_types namespace

Namespace Aliases

Name Description
errc The set of constants used for cross-platform error codes

Types

Name Description
error_category The type of error category used by the library
error_code The type of error code used by the library
error_condition The type of error condition used by the library
result The type of result returned by library functions
system_error The type of system error thrown by the library

Using Declarations

Name Description
generic_category A function to return the generic error category used by the library
system_category A function to return the system error category used by the library

boost::urls::grammar namespace

Namespace Aliases

Name
string_token

Types

Name Description
literal_rule Match a string literal exactly
lut_chars A set of characters
range A forward range of parsed elements
recycled A thread-safe collection of instances of T
recycled_ptr A pointer to a shared instance of T
string_view_base Common functionality for string views
unsigned_rule Match an unsigned decimal
aligned_storage Provides an aligned storage buffer aligned for T
ci_equal A case-insensitive equals predicate for strings
ci_hash A case-insensitive hash function object for strings
ci_less A case-insensitive less predicate for strings
is_charset Alias for std::true_type if T satisfies CharSet.
is_rule Determine if T meets the requirements of Rule

Enums

Name Description
condition Error conditions for errors received from rules
error Error codes returned when using rules

Functions

Name Description
ci_compare Return the case-insensitive comparison of s0 and s1
ci_digest Return the case-insensitive digest of a string
ci_is_equal Return true if s0 equals s1 using case-insensitive comparison
ci_is_less Return true if s0 is less than s1 using case-insensitive comparison
delim_rule delim_rule overloads
find_if Find the first character in the string that is in the set.
find_if_not Find the first character in the string that is not in CharSet
hexdig_value Return the decimal value of a hex character
not_empty_rule Match another rule, if the result is not empty
operator+ Return the union of two character sets.
operator- Return a new character set by subtracting
optional_rule Match a rule, or the empty string
parse Parse a character buffer using a rule
range_rule Match a repeating number of elements
ref ref overloads
squelch Squelch the value of a rule
to_lower Return c converted to lowercase
to_upper Return c converted to uppercase
token_rule Match a non-empty string of characters from a set
tuple_rule Match a series of rules in order
variant_rule Match one of a set of rules
operator<< Format a string to an output stream
operator== Compare two string views for equality
operator!= Compare two string views for inequality
operator< Compare two string views for less than
operator<= Compare two string views for less than or equal
operator> Compare two string views for greater than
operator>= Compare two string views for greater than or equal

Variables

Name Description
all_chars The set of all characters
alnum_chars The set of letters and digits
alpha_chars The set of all letters
dec_octet_rule Match a decimal octet
digit_chars The set of decimal digits
hexdig_chars The set of hexadecimal digits
vchars The set of visible characters

Concepts

Name Description
CharSet Concept for a CharSet
Rule Concept for a grammar Rule

boost::urls::string_token namespace

Types

Name Description
arg Base class for string tokens, and algorithm parameters
is_token Trait to determine if a type is a string token
return_string A string token for returning a plain string

Functions

Name Description
append_to Create a string token for appending to a plain string
assign_to Create a string token for assigning to a plain string
preserve_size Create a string token for a durable core::string_view

Concepts

Name Description
StringToken Concept for a string token

Namespaces

Name
urls

Namespaces

Name
error_types
grammar
string_token

Types

Name Description
authority_view A non-owning reference to a valid authority
decode_view A reference to a valid, percent-encoded string
encoding_opts Percent-encoding options
ignore_case_param An optional parameter to determine case-sensitivity
ipv4_address An IP version 4 style address.
ipv6_address An IP version 6 style address.
no_value_t The type of no_value
param A query parameter
param_pct_view A view of a percent-encoded query parameter
param_view A view of a query parameter
params_base Common functionality for query parameter containers
params_encoded_base Common functionality for containers
params_encoded_ref A view representing query parameters in a URL
params_encoded_view A view representing query parameters in a URL
params_ref A view representing query parameters in a URL
params_view A view representing query parameters in a URL
pct_string_view A reference to a valid percent-encoded string
segments_base Common functionality for containers
segments_encoded_base Common functionality for containers
segments_encoded_ref A view representing path segments in a URL
segments_encoded_view A view representing path segments in a URL
segments_ref A view representing path segments in a URL
segments_view A view representing path segments in a URL
static_url A modifiable container for a URL.
static_url_base Common implementation for all static URLs
url A modifiable container for a URL.
url_base Common functionality for containers
url_view A non-owning reference to a valid URL
url_view_base Common functionality for containers
format_arg A temporary reference to a formatting argument
named_arg A temporary reference to a named formatting argument
optional The type of optional used by the library
string_view The type of string_view used by the library
variant The type of variant used by the library

Enums

Name Description
error Error codes returned the library
host_type Identifies the type of host in a URL.
scheme Identifies a known URL scheme

Functions

Name Description
arg Designate a named argument for a replacement field
default_port Return the default port for a known scheme
encode encode overloads
encoded_size Return the buffer size needed for percent-encoding
format Format arguments into a URL
format_to Format arguments into a URL
make_pct_string_view Return a valid percent-encoded string
parse_absolute_uri Return a reference to a parsed URL string
parse_authority Parse an authority
parse_ipv4_address Return an IPv4 address from an IP address string in dotted decimal form
parse_ipv6_address Parse a string containing an IPv6 address.
parse_origin_form Return a reference to a parsed URL string
parse_path Parse a string and return an encoded segment view
parse_query Parse a string and return an encoded params view
parse_relative_ref Return a reference to a parsed URL string
parse_uri Return a reference to a parsed URL string
parse_uri_reference Return a reference to a parsed URL string
pct_encoded_rule Rule for a string with percent-encoded escapes
resolve Resolve a URL reference against a base URL
string_to_scheme Return the known scheme for a non-normalized string, if known
swap Swap
to_string Return the normalized string for a known scheme
operator<< Stream insertion operators
operator== Equality operators
operator!= Inequality operators
operator< Less-than operators
operator<= Less-than-or-equal operators
operator> Greater-than operators
operator>= Greater-than-or-equal operators

Variables

Name Description
absolute_uri_rule Rule for absolute-URI
authority_rule Rule for authority
gen_delim_chars The gen-delims character set
ignore_case Ignore case when comparing
ipv4_address_rule Rule for an IP version 4 style address
ipv6_address_rule Rule for An IP version 6 style address
no_value Constant indicating no value in a param
origin_form_rule Rule for origin-form
pchars The path character set
query_rule Rule for a query string
relative_ref_rule Rule for relative-ref
reserved_chars The reserved character set
sub_delim_chars The sub-delims character set
unreserved_chars The unreserved character set
uri_reference_rule Rule for URI-reference
uri_rule Rule for URI

Using Namespace Directives

Name
error_types

Namespace Aliases

Name Description
errc The set of constants used for cross-platform error codes

Types

Name Description
error_category The type of error category used by the library
error_code The type of error code used by the library
error_condition The type of error condition used by the library
result The type of result returned by library functions
system_error The type of system error thrown by the library

Using Declarations

Name Description
generic_category A function to return the generic error category used by the library
system_category A function to return the system error category used by the library
The set of constants used for cross-platform error codes

Synopsis

Declared in <boost/url/error_types.hpp>
namespace errc = boost::system::errc;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use core::string_view instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

The type of error category used by the library

Synopsis

Declared in <boost/url/error_types.hpp>
using error_category = boost::system::error_category;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use system::error_category instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

The type of error code used by the library

Synopsis

Declared in <boost/url/error_types.hpp>
using error_code = boost::system::error_code;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use system::error_code instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

The type of error condition used by the library

Synopsis

Declared in <boost/url/error_types.hpp>
using error_condition = boost::system::error_condition;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use system::error_condition instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

The type of result returned by library functions

Synopsis

Declared in <boost/url/error_types.hpp>
template<class T>
using result = boost::system::result<T, system::error_code>;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use system::result instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

This is an alias template used as the return type for functions that can either return a container, or fail with an error code. This is a brief synopsis of the type:

Declaration

template< class T > class result { public: // // Return true if the result contains an error // constexpr bool has_error() const noexcept; // // Return the error // constexpr system::error_code error() const noexcept; // // Return true if the result contains a value // constexpr bool has_value() const noexcept; constexpr explicit operator bool() const noexcept; // // Return the value, or throw an exception // constexpr T& value(); constexpr T const& value() const; // Return the value. // Precondition: has_value()==true // constexpr T& operator*() noexcept; constexpr T* operator->() noexcept; constexpr T const& operator*() const noexcept; constexpr T const* operator->() const noexcept; ...more

Usage

Given the function parse_uri with this signature:

system::result< url_view > parse_uri( core::string_view s ) noexcept;

The following statement captures the value in a variable upon success, otherwise throws:

url_view u = parse_uri( "http://example.com/path/to/file.txt" ).value();

This statement captures the result in a local variable and inspects the error condition:

system::result< url_view > rv = parse_uri( "http://example.com/path/to/file.txt" ); if(! rv ) std::cout << rv.error(); else std::cout << *rv;

Template Parameters

Name Description
T The type of value held by the result.

See Also

The type of system error thrown by the library

Synopsis

Declared in <boost/url/error_types.hpp>
using system_error = boost::system::system_error;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use system::system_error instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

A function to return the generic error category used by the library

Synopsis

Declared in <boost/url/error_types.hpp>
using boost::system::generic_category;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use core::string_view instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

A function to return the system error category used by the library

Synopsis

Declared in <boost/url/error_types.hpp>
using boost::system::system_category;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use core::string_view instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

Namespace Aliases

Name
string_token

Types

Name Description
literal_rule Match a string literal exactly
lut_chars A set of characters
range A forward range of parsed elements
recycled A thread-safe collection of instances of T
recycled_ptr A pointer to a shared instance of T
string_view_base Common functionality for string views
unsigned_rule Match an unsigned decimal
aligned_storage Provides an aligned storage buffer aligned for T
ci_equal A case-insensitive equals predicate for strings
ci_hash A case-insensitive hash function object for strings
ci_less A case-insensitive less predicate for strings
is_charset Alias for std::true_type if T satisfies CharSet.
is_rule Determine if T meets the requirements of Rule

Enums

Name Description
condition Error conditions for errors received from rules
error Error codes returned when using rules

Functions

Name Description
ci_compare Return the case-insensitive comparison of s0 and s1
ci_digest Return the case-insensitive digest of a string
ci_is_equal Return true if s0 equals s1 using case-insensitive comparison
ci_is_less Return true if s0 is less than s1 using case-insensitive comparison
delim_rule delim_rule overloads
find_if Find the first character in the string that is in the set.
find_if_not Find the first character in the string that is not in CharSet
hexdig_value Return the decimal value of a hex character
not_empty_rule Match another rule, if the result is not empty
operator+ Return the union of two character sets.
operator- Return a new character set by subtracting
optional_rule Match a rule, or the empty string
parse Parse a character buffer using a rule
range_rule Match a repeating number of elements
ref ref overloads
squelch Squelch the value of a rule
to_lower Return c converted to lowercase
to_upper Return c converted to uppercase
token_rule Match a non-empty string of characters from a set
tuple_rule Match a series of rules in order
variant_rule Match one of a set of rules
operator<< Format a string to an output stream
operator== Compare two string views for equality
operator!= Compare two string views for inequality
operator< Compare two string views for less than
operator<= Compare two string views for less than or equal
operator> Compare two string views for greater than
operator>= Compare two string views for greater than or equal

Variables

Name Description
all_chars The set of all characters
alnum_chars The set of letters and digits
alpha_chars The set of all letters
dec_octet_rule Match a decimal octet
digit_chars The set of decimal digits
hexdig_chars The set of hexadecimal digits
vchars The set of visible characters

Concepts

Name Description
CharSet Concept for a CharSet
Rule Concept for a grammar Rule

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
namespace string_token = boost::urls::string_token;


Provides an aligned storage buffer aligned for T

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
template<class T>
using aligned_storage = /* implementation-defined */;


Description

template struct aligned_storage { /// Return a pointer to the aligned storage area void* addr() noexcept; /// Return a pointer to the aligned storage area void const* addr() const noexcept; };
A case-insensitive equals predicate for strings

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
using ci_equal = /* implementation-defined */;


Description

The function object returns true when two strings are equal, ignoring case. This is a suitable equality predicate for unordered containers. The function is defined only for strings containing low-ASCII characters.

Example

boost::unordered_map< std::string, std::string, ci_hash, ci_equal > m1; std::unordered_map < std::string, std::string, ci_hash, ci_equal > m2; // (since C++20)

See Also

ci_hash, ci_less.

A case-insensitive hash function object for strings

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
using ci_hash = /* implementation-defined */;


Description

The hash function is non-cryptographic and not hardened against algorithmic complexity attacks. This is a suitable hash function for unordered containers. The function is defined only for strings containing low-ASCII characters.

Example

boost::unordered_map< std::string, std::string, ci_hash, ci_equal > m1; std::unordered_map < std::string, std::string, ci_hash, ci_equal > m2; // (since C++20)

See Also

ci_equal, ci_less.

A case-insensitive less predicate for strings

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
using ci_less = /* implementation-defined */;


Description

The comparison algorithm implements a case-insensitive total order on the set of all ASCII strings; however, it is not a lexicographical comparison. This is a suitable predicate for ordered containers. The function is defined only for strings containing low-ASCII characters.

Example

boost::container::map< std::string, std::string, ci_less > m1; std::map< std::string, std::string, ci_less > m2; // (since C++14)

See Also

ci_equal, ci_hash.

Alias for std::true_type if T satisfies CharSet.

Synopsis

Declared in <boost/url/grammar/charset.hpp>
template<class T>
using is_charset = /* implementation-defined */;


Description

This metafunction determines if the type T meets these requirements of CharSet:

bool T::operator()( char ) const noexcept;

Example

Use with enable_if on the return value:

template< class CharSet > typename std::enable_if< is_charset::value >::type func( CharSet const& cs );

Template Parameters

Name Description
T the type to check.
Determine if T meets the requirements of Rule

Synopsis

Declared in <boost/url/grammar/type_traits.hpp>
template<class T>
using is_rule = /* implementation-defined */;


Description

This is an alias for std::true_type if T meets the requirements, otherwise it is an alias for std::false_type.

Example

struct U { struct value_type; auto parse( char const*& it, char const* end) const -> system::result }; static_assert( is_rule::value, "Requirements not met" );

See Also

parse.

Match a string literal exactly

Synopsis

Declared in <boost/url/grammar/literal_rule.hpp>
class literal_rule;


Types

Name
value_type

Member Functions

Name Description
literal_rule [constructor]Construct from char
parse

Description

If there is no more input, or if the end of the input is reached, and a prefix of the literal matches exactly, the error returned is error::need_more.

Value Type

using value_type = core::string_view;

Example

Rules are used with the function parse.

system::result< core::string_view > rv = parse( "HTTP", literal_rule( "HTTP" ) );

See Also

delim_rule, parse.

Synopsis

Declared in <boost/url/grammar/literal_rule.hpp>
using value_type = core::string_view;


Construct from char

Synopsis

Declared in <boost/url/grammar/literal_rule.hpp>
constexpr
explicit
literal_rule(char const* s) noexcept;


Parameters

Name Description
s The value to construct from

Synopsis

Declared in <boost/url/grammar/literal_rule.hpp>
system::result<value_type>
parse(
    char const*& it,
    char const* end) const noexcept;


A set of characters

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
class lut_chars;


Member Functions

Name Description
lut_chars [constructor]Constructors
operator() Return true if ch is in the character set.
operator~ Return a new character set which is the complement of another character set.

Friends

|===
Name Description
operator- Return a new character set by subtracting
operator+ Return the union of two character sets.

Description

The characters defined by instances of this set are provided upon construction. The constexpr implementation allows these to become compile-time constants.

Example

Character sets are used with rules and the functions find_if and find_if_not.

constexpr lut_chars vowel_chars = "AEIOU" "aeiou"; system::result< core::string_view > rv = parse( "Aiea", token_rule( vowel_chars ) );

See Also

find_if, find_if_not, parse, token_rule.

Constructors

Synopses

Declared in <boost/url/grammar/lut_chars.hpp>
Constructor
constexpr
lut_chars(char ch) noexcept;


» more... Constructor
constexpr
lut_chars(char const* s) noexcept;


» more... Constructor.
template<class Pred>
requires detail::is_pred<Pred>::value &&
        ! std::is_base_of<
            lut_chars, Pred>::value
constexpr
lut_chars(Pred const& pred) noexcept;


» more...

Parameters

Name Description
ch A character.
s A null-terminated string.
pred The function object to use for determining membership in the character set.
Constructor

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
lut_chars(char ch) noexcept;


Description

This function constructs a character set which has as a single member, the character ch.

Example

constexpr lut_chars asterisk( '*' );

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
ch A character.
Constructor

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
lut_chars(char const* s) noexcept;


Description

This function constructs a character set which has as members, all of the characters present in the null-terminated string s.

Example

constexpr lut_chars digits = "0123456789";

Complexity

Linear in ::strlen(s), or constant if s is a constant expression.

Exception Safety

Throws nothing.

Parameters

Name Description
s A null-terminated string.
Constructor.

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
template<class Pred>
requires detail::is_pred<Pred>::value &&
        ! std::is_base_of<
            lut_chars, Pred>::value
constexpr
lut_chars(Pred const& pred) noexcept;


Description

This function constructs a character set which has as members, every value of char ch for which the expression pred(ch) returns true.

Example

struct is_digit { constexpr bool operator()(char c ) const noexcept { return c >= '0' && c <= '9'; } }; constexpr lut_chars digits( is_digit{} );

Complexity

Linear in pred, or constant if pred(ch) is a constant expression.

Exception Safety

Throws nothing.

Parameters

Name Description
pred The function object to use for determining membership in the character set.
Return true if ch is in the character set.

Synopses

Declared in <boost/url/grammar/lut_chars.hpp>
Return true if ch is in the character set.
constexpr
bool
operator()(char ch) const noexcept;


» more... Return true if ch is in the character set.
constexpr
bool
operator()(unsigned char ch) const noexcept;


» more...

Return Value

true if ch is in the set.

Parameters

Name Description
ch The character to test.
Return true if ch is in the character set.

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
bool
operator()(char ch) const noexcept;


Description

This function returns true if the character ch is in the set, otherwise it returns false.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if ch is in the set.

Parameters

Name Description
ch The character to test.
Return true if ch is in the character set.

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
bool
operator()(unsigned char ch) const noexcept;


Description

This function returns true if the character ch is in the set, otherwise it returns false.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if ch is in the set.

Parameters

Name Description
ch The character to test.
Return a new character set which is the complement of another character set.

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
lut_chars
operator~() const noexcept;


Description

This function returns a new character set which contains all of the characters that are not in *this.

Example

This statement declares a character set containing everything but vowels:

constexpr lut_chars not_vowels = ~lut_chars( "AEIOU" "aeiou" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The new character set.
A forward range of parsed elements

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
template<class T>
class range;


Types

Name Description
iterator A constant, forward iterator to elements of the range
const_iterator A constant, forward iterator to elements of the range
const_reference The type of each element of the range
difference_type The type used to represent signed integers
pointer Provided for compatibility, unused
reference The type of each element of the range
size_type The type used to represent unsigned integers
value_type The type of each element of the range

Member Functions

Name Description
range [constructor]Constructor
~range [destructor]Destructor
operator= Assignment
begin Return an iterator to the beginning
empty Return true if the range is empty
end Return an iterator to the end
size Return the number of elements in the range
string Return the matching part of the string

Description

Objects of this type are forward ranges returned when parsing using the range_rule. Iteration is performed by re-parsing the underlying character buffer. Ownership of the buffer is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced by the range.

The implementation may use temporary, recycled storage for type-erasure. Objects of type range are intended to be used ephemerally. That is, for short durations such as within a function scope. If it is necessary to store the range for a long period of time or with static storage duration, it is necessary to copy the contents to an object of a different type.

Template Parameters

Name Description
T The value type of the range

See Also

parse, range_rule.

A constant, forward iterator to elements of the range

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using const_iterator = iterator;


The type of each element of the range

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using const_reference = T const&;


The type used to represent signed integers

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using difference_type = std::ptrdiff_t;


Provided for compatibility, unused

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using pointer = void const*;


The type of each element of the range

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using reference = T const&;


The type used to represent unsigned integers

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using size_type = std::size_t;


The type of each element of the range

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
using value_type = T;


A constant, forward iterator to elements of the range

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
class iterator;


Friends

|===
Name Description
range A forward range of parsed elements
Constructor

Synopses

Declared in <boost/url/grammar/range_rule.hpp>
Constructor
range() noexcept;


» more... Constructor
range(range const& other) noexcept;


» more... Constructor
range(range&& other) noexcept;


» more...
Constructor

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
range() noexcept;


Description

Default-constructed ranges have zero elements.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
range(range const& other) noexcept;


Description

The copy references the same underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Exception Safety

Throws nothing.

Parameters

Name Description
other The object to copy construct from
Constructor

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
range(range&& other) noexcept;


Description

The new range references the same underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced. The moved-from object becomes as if default-constructed.

Exception Safety

Throws nothing.

Parameters

Name Description
other The object to move construct from
Destructor

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
~range();


Assignment

Synopses

Declared in <boost/url/grammar/range_rule.hpp>
Assignment
range&
operator=(range const& other) noexcept;


» more... Assignment
range&
operator=(range&& other) noexcept;


» more...

Return Value

*this
Assignment

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
range&
operator=(range const& other) noexcept;


Description

The copy references the same underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Exception Safety

Throws nothing.

Return Value

*this

Parameters

Name Description
other The object to copy assign from
Assignment

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
range&
operator=(range&& other) noexcept;


Description

After the move, this references the same underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced. The moved-from object becomes as if default-constructed.

Exception Safety

Throws nothing.

Return Value

*this

Parameters

Name Description
other The object to move assign from
Return an iterator to the beginning

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
iterator
begin() const noexcept;


Return Value

An iterator to the first element
Return true if the range is empty

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
bool
empty() const noexcept;


Return Value

true if the range is empty
Return an iterator to the end

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
iterator
end() const noexcept;


Return Value

An iterator to one past the last element
Return the number of elements in the range

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
std::size_t
size() const noexcept;


Return Value

The number of elements
Return the matching part of the string

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
core::string_view
string() const noexcept;


Return Value

A string view representing the range
A thread-safe collection of instances of T

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
template<class T>
class recycled;


Member Functions

Name Description
recycled [constructor]Constructor
~recycled [destructor]Destructor

Friends

|===
Name Description
recycled_ptr A pointer to a shared instance of T

Description

Instances of this type may be used to control where recycled instances of T come from when used with recycled_ptr.

Example

static recycled< std::string > bin; recycled_ptr< std::string > ps( bin ); // Put the string into a known state ps->clear();

See Also

recycled_ptr.

Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
constexpr
recycled() = default;


Destructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
~recycled();


Description

All recycled instances of T are destroyed. Undefined behavior results if there are any recycled_ptr which reference this recycle bin.

A pointer to a shared instance of T

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
template<class T>
class recycled_ptr;


Member Functions

Name Description
recycled_ptr [constructor]Constructor
~recycled_ptr [destructor]Destructor
operator= Assignment
acquire Return the referenced object
bin Return the referenced recycle bin
empty Return true if this does not reference an object
get Return the referenced object
operator* Return the referenced object
operator-> Return the referenced object
release Release the referenced object
operator bool Return true if this references an object

Friends

|===
Name Description
recycled A thread-safe collection of instances of T

Description

This is a smart pointer container which can acquire shared ownership of an instance of T upon or after construction. The instance is guaranteed to be in a valid, but unknown state. Every recycled pointer references a valid recycle bin.

Example

static recycled< std::string > bin; recycled_ptr< std::string > ps( bin ); // Put the string into a known state ps->clear();

Template Parameters

Name Description
T the type of object to acquire, which must be DefaultConstructible.
Constructor

Synopses

Declared in <boost/url/grammar/recycled.hpp>
Constructor
recycled_ptr();


» more... Constructor
recycled_ptr(recycled_ptr const& other) noexcept;


» more... Constructor
recycled_ptr(recycled_ptr&& other) noexcept;


» more... Constructor
recycled_ptr(std::nullptr_t value) noexcept;


» more... Constructor
explicit
recycled_ptr(recycled<T>& bin);


» more... Constructor
recycled_ptr(
    recycled<T>& bin,
    std::nullptr_t) noexcept;


» more...

Parameters

Name Description
other The pointer to copy
bin The recycle bin to use

See Also

recycled.

acquire, recycled, release.

Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr();


Description

Upon construction, this acquires exclusive access to an object of type T which is either recycled from a global recycle bin, or newly allocated. The object is in an unknown but valid state.

Example

recycled_ptr< std::string > ps; // Put the string into a known state ps->clear();

Postconditions

&this->bin() != nullptr && ! this->empty()

See Also

recycled.

Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr(recycled_ptr const& other) noexcept;


Description

If other references an object, the newly constructed pointer acquires shared ownership. Otherwise this is empty. The new pointer references the same recycle bin as other.

Postconditions

&this->bin() == &other->bin() && this->get() == other.get()

Exception Safety

Throws nothing.

Parameters

Name Description
other The pointer to copy
Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr(recycled_ptr&& other) noexcept;


Description

If other references an object, ownership is transferred including a reference to the recycle bin. After the move, the moved-from object is empty.

Postconditions

&this->bin() == &other->bin() && ! this->empty() && other.empty()

Exception Safety

Throws nothing.

Parameters

Name Description
other The pointer to move from
Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr(std::nullptr_t value) noexcept;


Description

After construction, this is empty and refers to a global recycle bin.

Example

recycled_ptr< std::string > ps( nullptr ); // Acquire a string and put it into a known state ps->acquire(); ps->clear();

Postconditions

&this->bin() != nullptr && this->empty()

Exception Safety

Throws nothing.

Parameters

Name Description
value The object to construct from

See Also

acquire, recycled, release.

Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
explicit
recycled_ptr(recycled<T>& bin);


Description

Upon construction, this acquires exclusive access to an object of type T which is either recycled from the specified bin, or newly allocated. The object is in an unknown but valid state.

Example

static recycled< std::string > bin; recycled_ptr< std::string > ps( bin ); // Put the string into a known state ps->clear();

Postconditions

&this->bin() == &bin && ! this->empty()

Parameters

Name Description
bin The recycle bin to use

See Also

recycled.

Constructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr(
    recycled<T>& bin,
    std::nullptr_t) noexcept;


Description

After construction, this is empty and refers to the specified recycle bin.

Example

static recycled< std::string > bin; recycled_ptr< std::string > ps( bin, nullptr ); // Acquire a string and put it into a known state ps->acquire(); ps->clear();

Postconditions

&this->bin() == &bin && this->empty()

Exception Safety

Throws nothing.

Parameters

Name Description
bin The recycle bin to use

See Also

acquire, recycled, release.

Destructor

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
~recycled_ptr();


Description

If this is not empty, shared ownership of the pointee is released. If this was the last reference, the object is returned to the original recycle bin.

Effects

this->release();
Assignment

Synopses

Declared in <boost/url/grammar/recycled.hpp>
Assignment
recycled_ptr&
operator=(recycled_ptr const& other) noexcept;


» more... Assignment
recycled_ptr&
operator=(recycled_ptr&& other) noexcept;


» more...

Return Value

*this

Parameters

Name Description
other The pointer to copy from
Assignment

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr&
operator=(recycled_ptr const& other) noexcept;


Description

If other references an object, this acquires shared ownership and references the same recycle bin as other. The previous object if any is released.

Effects

this->release()

Postconditions

&this->bin() == &other->bin() && this->get() == other.get()

Exception Safety

Throws nothing.

Return Value

*this

Parameters

Name Description
other The pointer to copy from
Assignment

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled_ptr&
operator=(recycled_ptr&& other) noexcept;


Description

If other references an object, ownership is transferred including a reference to the recycle bin. After the move, the moved-from object is empty.

Effects

this->release()

Postconditions

&this->bin() == &other->bin()

Exception Safety

Throws nothing.

Return Value

*this

Parameters

Name Description
other The pointer to move from
Return the referenced object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
T&
acquire();


Description

If this references an object, it is returned. Otherwise, exclusive ownership of a new object of type T is acquired and returned.

Postconditions

not this->empty()

Return Value

A reference to the object
Return the referenced recycle bin

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
recycled<T>&
bin() const noexcept;


Description

Exception Safety

Throws nothing.

Return Value

A reference to the recycle bin
Return true if this does not reference an object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
bool
empty() const noexcept;


Description

Exception Safety

Throws nothing.

Return Value

p == nullptr
Return the referenced object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
T*
get() const noexcept;


Description

If this is empty, nullptr is returned.

Exception Safety

Throws nothing.

Return Value

A pointer to the object
Return the referenced object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
T&
operator*() const noexcept;


Description

Preconditions

not this->empty()

Return Value

A reference to the object
Return the referenced object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
T*
operator->() const noexcept;


Description

If this is empty, nullptr is returned.

Exception Safety

Throws nothing.

Return Value

A pointer to the object
Release the referenced object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
void
release() noexcept;


Description

If this references an object, it is released to the referenced recycle bin. The pointer continues to reference the same recycle bin.

Postconditions

this->empty()

Exception Safety

Throws nothing.

Return true if this references an object

Synopsis

Declared in <boost/url/grammar/recycled.hpp>
explicit
operator bool() const noexcept;


Description

Effects

return ! this->empty();

Exception Safety

Throws nothing.

Return Value

!this->empty()
Common functionality for string views

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
class string_view_base;


Types

Name Description
const_iterator The const iterator type
const_pointer The const pointer type
const_reference The const reference type
const_reverse_iterator The const reverse iterator type
difference_type The difference type
iterator The iterator type
pointer The pointer type
reference The reference type
reverse_iterator The reverse iterator type
size_type The size type
traits_type The character traits
value_type The value type

Member Functions

Name Description
at Access a character
back Return the last character
begin Return an iterator to the beginning
cbegin Return an iterator to the beginning
cend Return an iterator to the end
compare Return the result of comparing to another string
contains Return true if matching characters are found
copy Copy the characters to another buffer
crbegin Return a reverse iterator to the end
crend Return a reverse iterator to the beginning
data Return a pointer to the character buffer
empty Return true if the string is empty
end Return an iterator to the end
ends_with Return true if a matching suffix exists
find Return the position of matching characters
find_first_not_of Return the position of the first non-match
find_first_of Return the position of the first match
find_last_not_of Return the position of the last non-match
find_last_of Return the position of the last match
front Return the first character
length Return the size
max_size Return the maximum allowed size
operator[] Access a character
rbegin Return a reverse iterator to the end
rend Return a reverse iterator to the beginning
rfind Return the position of matching characters
size Return the size
starts_with Return true if a matching prefix exists
substr Return a view to part of the string
operator std::string Conversion
operator std::string_view Conversion

Static Data Members

Name Description
npos A constant used to represent "no position"

Protected Member Functions

Name Description
string_view_base [constructor]Constructor
operator= Assignment
swap Swap

Protected Data Members

Name Description
s_ The referenced character buffer

Friends

|===
Name Description
operator<< Format a string to an output stream
operator>= Compare two string views for greater than or equal
operator> Compare two string views for greater than
operator<= Compare two string views for less than or equal
operator< Compare two string views for less than
operator!= Compare two string views for inequality
operator== Compare two string views for equality

Derived Classes

Name Description
pct_string_view A reference to a valid percent-encoded string

Description

This base class is used to provide common member functions for reference types that behave like string views. This cannot be instantiated directly; instead, derive from the type and provide constructors which offer any desired preconditions and invariants.

The const iterator type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef char const* const_iterator;


The const pointer type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef char const* const_pointer;


The const reference type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef char const& const_reference;


The const reverse iterator type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;


The difference type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef std::ptrdiff_t difference_type;


The iterator type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef const_iterator iterator;


The pointer type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef char* pointer;


The reference type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef char& reference;


The reverse iterator type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef const_reverse_iterator reverse_iterator;


The size type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef std::size_t size_type;


The character traits

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef std::char_traits<char> traits_type;


The value type

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
typedef char value_type;


Access a character

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reference
at(size_type pos) const;


Description

See core::string_view::at

Return Value

The character at the position

Parameters

Name Description
pos The position to access
Return the last character

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reference
back() const noexcept;


Description

See core::string_view::back

Return Value

The last character
Return an iterator to the beginning

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_iterator
begin() const noexcept;


Description

See core::string_view::begin

Return Value

An iterator to the beginning
Return an iterator to the beginning

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_iterator
cbegin() const noexcept;


Description

See core::string_view::cbegin

Return Value

An iterator to the beginning
Return an iterator to the end

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_iterator
cend() const noexcept;


Description

See core::string_view::cend

Return Value

An iterator to the end
Return the result of comparing to another string

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the result of comparing to another string
constexpr
int
compare(core::string_view str) const noexcept;


» more... Return the result of comparing to another string
constexpr
int
compare(char const* s) const noexcept;


» more... Return the result of comparing to another string
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    core::string_view str) const;


» more... Return the result of comparing to another string
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    char const* s) const;


» more... Return the result of comparing to another string
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    char const* s,
    size_type n2) const;


» more... Return the result of comparing to another string
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    core::string_view str,
    size_type pos2,
    size_type n2) const;


» more...

Return Value

The result of the comparison

Parameters

Name Description
str The string to compare
s The string to compare
pos1 The position to start comparing from
n1 The number of characters to compare
n2 The number of characters to compare
pos2 The position to start comparing from
Return the result of comparing to another string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
int
compare(core::string_view str) const noexcept;


Description

See core::string_view::compare

Return Value

The result of the comparison

Parameters

Name Description
str The string to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
int
compare(char const* s) const noexcept;


Description

See core::string_view::compare

Return Value

The result of the comparison

Parameters

Name Description
s The string to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    core::string_view str) const;


Description

See core::string_view::compare

Return Value

The result of the comparison

Parameters

Name Description
pos1 The position to start comparing from
n1 The number of characters to compare
str The string to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    char const* s) const;


Description

See core::string_view::compare

Return Value

The result of the comparison

Parameters

Name Description
pos1 The position to start comparing from
n1 The number of characters to compare
s The string to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    char const* s,
    size_type n2) const;


Description

See core::string_view::compare

Return Value

The result of the comparison

Parameters

Name Description
pos1 The position to start comparing from
n1 The number of characters to compare
s The string to compare
n2 The number of characters to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
int
compare(
    size_type pos1,
    size_type n1,
    core::string_view str,
    size_type pos2,
    size_type n2) const;


Description

See core::string_view::compare

Return Value

The result of the comparison

Parameters

Name Description
pos1 The position to start comparing from
n1 The number of characters to compare
str The string to compare
pos2 The position to start comparing from
n2 The number of characters to compare
Return true if matching characters are found

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return true if matching characters are found
constexpr
bool
contains(core::string_view sv) const noexcept;


» more... Return true if matching characters are found
constexpr
bool
contains(char c) const noexcept;


» more... Return true if matching characters are found
constexpr
bool
contains(char const* s) const noexcept;


» more...

Return Value

  • true if the string contains the characters, otherwise false
  • true if the string contains the character, otherwise false

Parameters

Name Description
sv The string to search for
c The character to search for
s The string to search for
Return true if matching characters are found

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
contains(core::string_view sv) const noexcept;


Description

See core::string_view::contains

Return Value

true if the string contains the characters, otherwise false

Parameters

Name Description
sv The string to search for
Return true if matching characters are found

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
contains(char c) const noexcept;


Description

See core::string_view::contains

Return Value

true if the string contains the character, otherwise false

Parameters

Name Description
c The character to search for
Return true if matching characters are found

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
contains(char const* s) const noexcept;


Description

See core::string_view::contains

Return Value

true if the string contains the characters, otherwise false

Parameters

Name Description
s The string to search for
Copy the characters to another buffer

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
copy(
    char* s,
    size_type n,
    size_type pos = 0) const;


Description

See core::string_view::copy

Return Value

The number of characters copied

Parameters

Name Description
s The destination buffer
n The number of characters to copy
pos The position to start from
Return a reverse iterator to the end

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reverse_iterator
crbegin() const noexcept;


Description

See core::string_view::crbegin

Return Value

A reverse iterator to the end
Return a reverse iterator to the beginning

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reverse_iterator
crend() const noexcept;


Description

See core::string_view::crend

Return Value

A reverse iterator to the beginning
Return a pointer to the character buffer

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_pointer
data() const noexcept;


Description

See core::string_view::data

Return Value

A pointer to the character buffer
Return true if the string is empty

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
empty() const noexcept;


Description

See core::string_view::size

Return Value

true if the string is empty
Return an iterator to the end

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_iterator
end() const noexcept;


Description

See core::string_view::end

Return Value

An iterator to the end
Return true if a matching suffix exists

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return true if a matching suffix exists
constexpr
bool
ends_with(core::string_view x) const noexcept;


» more... Return true if a matching suffix exists
constexpr
bool
ends_with(char x) const noexcept;


» more... Return true if a matching suffix exists
constexpr
bool
ends_with(char const* x) const noexcept;


» more...

Return Value

true if the suffix matches

Parameters

Name Description
x The string to search for
Return true if a matching suffix exists

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
ends_with(core::string_view x) const noexcept;


Description

See core::string_view::ends_with

Return Value

true if the suffix matches

Parameters

Name Description
x The string to search for
Return true if a matching suffix exists

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
ends_with(char x) const noexcept;


Description

See core::string_view::ends_with

Return Value

true if the suffix matches

Parameters

Name Description
x The character to search for
Return true if a matching suffix exists

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
ends_with(char const* x) const noexcept;


Description

See core::string_view::ends_with

Return Value

true if the suffix matches

Parameters

Name Description
x The string to search for
Return the position of matching characters

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the position of matching characters
constexpr
size_type
find(
    core::string_view str,
    size_type pos = 0) const noexcept;


» more... Return the position of matching characters
constexpr
size_type
find(
    char c,
    size_type pos = 0) const noexcept;


» more... Return the position of matching characters
constexpr
size_type
find(
    char const* s,
    size_type pos = 0) const noexcept;


» more... Return the position of matching characters
constexpr
size_type
find(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


» more...

Return Value

The position of the first match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
c The character to search for
s The characters to search for
n The number of characters to search for
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find(
    core::string_view str,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find

Return Value

The position of the first match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find(
    char c,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find

Return Value

The position of the first match

Parameters

Name Description
c The character to search for
pos The position to start searching from
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find(
    char const* s,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find

Return Value

The position of the first match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


Description

See core::string_view::find

Return Value

The position of the first match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
n The number of characters to search for
Return the position of the first non-match

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the position of the first non-match
constexpr
size_type
find_first_not_of(
    core::string_view str,
    size_type pos = 0) const noexcept;


» more... Return the position of the first non-match
constexpr
size_type
find_first_not_of(
    char c,
    size_type pos = 0) const noexcept;


» more... Return the position of the first non-match
constexpr
size_type
find_first_not_of(
    char const* s,
    size_type pos = 0) const noexcept;


» more... Return the position of the first non-match
constexpr
size_type
find_first_not_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


» more...

Return Value

The position of the first non-match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
c The character to search for
s The characters to search for
n The number of characters to search for
Return the position of the first non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_not_of(
    core::string_view str,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find_first_not_of

Return Value

The position of the first non-match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
Return the position of the first non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_not_of(
    char c,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find_first_not_of

Return Value

The position of the first non-match

Parameters

Name Description
c The character to search for
pos The position to start searching from
Return the position of the first non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_not_of(
    char const* s,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find_first_not_of

Return Value

The position of the first non-match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
Return the position of the first non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_not_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


Description

See core::string_view::find_first_not_of

Return Value

The position of the first non-match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
n The number of characters to search for
Return the position of the first match

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the position of the first match
constexpr
size_type
find_first_of(
    core::string_view str,
    size_type pos = 0) const noexcept;


» more... Return the position of the first match
constexpr
size_type
find_first_of(
    char c,
    size_type pos = 0) const noexcept;


» more... Return the position of the first match
constexpr
size_type
find_first_of(
    char const* s,
    size_type pos = 0) const noexcept;


» more... Return the position of the first match
constexpr
size_type
find_first_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


» more...

Return Value

The position of the first match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
c The character to search for
s The characters to search for
n The number of characters to search for
Return the position of the first match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_of(
    core::string_view str,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find_first_of

Return Value

The position of the first match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
Return the position of the first match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_of(
    char c,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find_first_of

Return Value

The position of the first match

Parameters

Name Description
c The character to search for
pos The position to start searching from
Return the position of the first match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_of(
    char const* s,
    size_type pos = 0) const noexcept;


Description

See core::string_view::find_first_of

Return Value

The position of the first match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
Return the position of the first match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_first_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


Description

See core::string_view::find_first_of

Return Value

The position of the first match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
n The number of characters to search for
Return the position of the last non-match

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the position of the last non-match
constexpr
size_type
find_last_not_of(
    core::string_view str,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of the last non-match
constexpr
size_type
find_last_not_of(
    char c,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of the last non-match
constexpr
size_type
find_last_not_of(
    char const* s,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of the last non-match
constexpr
size_type
find_last_not_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


» more...

Return Value

The position of the last non-match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
c The character to search for
s The characters to search for
n The number of characters to search for
Return the position of the last non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_not_of(
    core::string_view str,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::find_last_not_of

Return Value

The position of the last non-match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
Return the position of the last non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_not_of(
    char c,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::find_last_not_of

Return Value

The position of the last non-match

Parameters

Name Description
c The character to search for
pos The position to start searching from
Return the position of the last non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_not_of(
    char const* s,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::find_last_not_of

Return Value

The position of the last non-match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
Return the position of the last non-match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_not_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


Description

See core::string_view::find_last_not_of

Return Value

The position of the last non-match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
n The number of characters to search for
Return the position of the last match

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the position of the last match
constexpr
size_type
find_last_of(
    core::string_view str,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of the last match
constexpr
size_type
find_last_of(
    char c,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of the last match
constexpr
size_type
find_last_of(
    char const* s,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of the last match
constexpr
size_type
find_last_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


» more...

Return Value

The position of the last match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
c The character to search for
s The characters to search for
n The number of characters to search for
Return the position of the last match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_of(
    core::string_view str,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::find_last_of

Return Value

The position of the last match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
Return the position of the last match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_of(
    char c,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::find_last_of

Return Value

The position of the last match

Parameters

Name Description
c The character to search for
pos The position to start searching from
Return the position of the last match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_of(
    char const* s,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::find_last_of

Return Value

The position of the last match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
Return the position of the last match

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
find_last_of(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


Description

See core::string_view::find_last_of

Return Value

The position of the last match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
n The number of characters to search for
Return the first character

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reference
front() const noexcept;


Description

See core::string_view::front

Return Value

The first character
Return the size

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
length() const noexcept;


Description

See core::string_view::length

Return Value

The size
Return the maximum allowed size

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
max_size() const noexcept;


Description

See core::string_view::max_size

Return Value

The maximum allowed size
Access a character

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reference
operator[](size_type pos) const noexcept;


Description

See core::string_view::operator[]

Return Value

The character at the position

Parameters

Name Description
pos The position to access
Return a reverse iterator to the end

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reverse_iterator
rbegin() const noexcept;


Description

See core::string_view::rbegin

Return Value

A reverse iterator to the end
Return a reverse iterator to the beginning

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
const_reverse_iterator
rend() const noexcept;


Description

See core::string_view::rend

Return Value

A reverse iterator to the beginning
Return the position of matching characters

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return the position of matching characters
constexpr
size_type
rfind(
    core::string_view str,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of matching characters
constexpr
size_type
rfind(
    char c,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of matching characters
constexpr
size_type
rfind(
    char const* s,
    size_type pos = core::string_view::npos) const noexcept;


» more... Return the position of matching characters
constexpr
size_type
rfind(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


» more...

Return Value

The position of the first match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
c The character to search for
s The characters to search for
n The number of characters to search for
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
rfind(
    core::string_view str,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::rfind

Return Value

The position of the first match

Parameters

Name Description
str The characters to search for
pos The position to start searching from
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
rfind(
    char c,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::rfind

Return Value

The position of the first match

Parameters

Name Description
c The character to search for
pos The position to start searching from
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
rfind(
    char const* s,
    size_type pos = core::string_view::npos) const noexcept;


Description

See core::string_view::rfind

Return Value

The position of the first match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
Return the position of matching characters

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
rfind(
    char const* s,
    size_type pos,
    size_type n) const noexcept;


Description

See core::string_view::rfind

Return Value

The position of the first match

Parameters

Name Description
s The characters to search for
pos The position to start searching from
n The number of characters to search for
Return the size

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
size_type
size() const noexcept;


Description

See core::string_view::size

Return Value

The size
Return true if a matching prefix exists

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Return true if a matching prefix exists
constexpr
bool
starts_with(core::string_view x) const noexcept;


» more... Return true if a matching prefix exists
constexpr
bool
starts_with(char x) const noexcept;


» more... Return true if a matching prefix exists
constexpr
bool
starts_with(char const* x) const noexcept;


» more...

Return Value

true if the prefix matches

Parameters

Name Description
x The string to search for
Return true if a matching prefix exists

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
starts_with(core::string_view x) const noexcept;


Description

See core::string_view::starts_with

Return Value

true if the prefix matches

Parameters

Name Description
x The string to search for
Return true if a matching prefix exists

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
starts_with(char x) const noexcept;


Description

See core::string_view::starts_with

Return Value

true if the prefix matches

Parameters

Name Description
x The character to search for
Return true if a matching prefix exists

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
bool
starts_with(char const* x) const noexcept;


Description

See core::string_view::starts_with

Return Value

true if the prefix matches

Parameters

Name Description
x The string to search for
Return a view to part of the string

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
core::string_view
substr(
    size_type pos = 0,
    size_type n = core::string_view::npos) const;


Description

See core::string_view::substr

Return Value

A view to the substring

Parameters

Name Description
pos The position to start from
n The number of characters
Conversion

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
explicit
operator std::string() const noexcept;


Description

Conversion to std::string is explicit because assigning to string using an implicit constructor does not preserve capacity.

Return Value

A string with the same contents
Conversion

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
operator std::string_view() const noexcept;


Return Value

A string view with the same contents
A constant used to represent "no position"

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
inline constexpr static
std::size_t npos = core::string_view::npos;


Constructor

Synopses

Declared in <boost/url/grammar/string_view_base.hpp>
Constructor
constexpr
string_view_base() = default;


» more... Constructor
constexpr
string_view_base(string_view_base const& other) = default;


» more... Constructor
constexpr
string_view_base(core::string_view s) noexcept;


» more... Constructor
constexpr
string_view_base(
    char const* data,
    std::size_t size) noexcept;


» more...

Parameters

Name Description
s The string view
data The character buffer
size The number of characters
Constructor

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
string_view_base() = default;


Constructor

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
string_view_base(string_view_base const& other) = default;


Parameters

Name Description
other The object to copy construct from
Constructor

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
string_view_base(core::string_view s) noexcept;


Parameters

Name Description
s The string view
Constructor

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
string_view_base(
    char const* data,
    std::size_t size) noexcept;


Parameters

Name Description
data The character buffer
size The number of characters
Assignment

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
constexpr
string_view_base&
operator=(string_view_base const& other) = default;


Return Value

A reference to this object

Parameters

Name Description
other The object to assign
Swap

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
void
swap(string_view_base& s) noexcept;


Parameters

Name Description
s The object to swap with
The referenced character buffer

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
core::string_view s_;


Match an unsigned decimal

Synopsis

Declared in <boost/url/grammar/unsigned_rule.hpp>
template<class Unsigned>
struct unsigned_rule;


Types

Name
value_type

Member Functions

Name
parse

Description

Extra leading zeroes are disallowed.

Value Type

using value_type = Unsigned;

Example

Rules are used with the function parse.

system::result< unsigned short > rv = parse( "32767", unsigned_rule< unsigned short >{} );

BNF

unsigned = "0" / ( ["1"..."9"] *DIGIT )

Template Parameters

Name Description
Unsigned The unsigned integer type used to store the result.

See Also

grammar::parse.

Synopsis

Declared in <boost/url/grammar/unsigned_rule.hpp>
using value_type = Unsigned;


Synopsis

Declared in <boost/url/grammar/unsigned_rule.hpp>
system::result<value_type>
parse(
    char const*& it,
    char const* end) const noexcept;


Error conditions for errors received from rules

Synopsis

Declared in <boost/url/grammar/error.hpp>
enum class condition : int;


Members

Name Description
fatal A fatal error in syntax was encountered.

See Also

error, parse.

Error codes returned when using rules

Synopsis

Declared in <boost/url/grammar/error.hpp>
enum class error : int;


Members

Name Description
need_more More input is needed to match the rule
mismatch The rule did not match the input.
end_of_range A rule reached the end of a range
leftover Leftover input remaining after match.
invalid A rule encountered unrecoverable invalid input.
out_of_range An integer overflowed during parsing.
syntax An unspecified syntax error was found.

See Also

condition, parse.

Return the case-insensitive comparison of s0 and s1

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
int
ci_compare(
    core::string_view s0,
    core::string_view s1) noexcept;


Description

This returns the lexicographical comparison of two strings, ignoring case. The function is defined only for strings containing low-ASCII characters.

Example

assert( ci_compare( "boost", "Boost" ) == 0 );

Exception Safety

Throws nothing.

Return Value

0 if the strings are equal, -1 if s0 is less than s1, or 1 if s0 is greater than s1.

Parameters

Name Description
s0 The first string
s1 The second string

See Also

ci_is_equal, ci_is_less.

Return the case-insensitive digest of a string

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
std::size_t
ci_digest(core::string_view s) noexcept;


Description

The hash function is non-cryptographic and not hardened against algorithmic complexity attacks. Returned digests are suitable for usage in unordered containers. The function is defined only for strings containing low-ASCII characters.

Return Value

The digest

Parameters

Name Description
s The string
Return true if s0 equals s1 using case-insensitive comparison

Synopses

Declared in <boost/url/grammar/ci_string.hpp>
Return true if s0 equals s1 using case-insensitive comparison
bool
ci_is_equal(
    core::string_view s0,
    core::string_view s1) noexcept;


» more... Return true if s0 equals s1 using case-insensitive comparison
template<
    class String0,
    class String1>
bool
ci_is_equal(
    String0 const& s0,
    String1 const& s1)
requires ! std::is_convertible<
                String0, core::string_view>::value ||
            ! std::is_convertible<
                String1, core::string_view>::value;


» more...

Return Value

true if s0 case-insensitively equals s1, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string

See Also

ci_compare, ci_is_less.

Return true if s0 equals s1 using case-insensitive comparison

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
bool
ci_is_equal(
    core::string_view s0,
    core::string_view s1) noexcept;


Description

The function is defined only for strings containing low-ASCII characters.

Example

assert( ci_is_equal( "Boost", "boost" ) );

Return Value

true if s0 case-insensitively equals s1, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string

See Also

ci_compare, ci_is_less.

Return true if s0 equals s1 using case-insensitive comparison

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
template<
    class String0,
    class String1>
bool
ci_is_equal(
    String0 const& s0,
    String1 const& s1)
requires ! std::is_convertible<
                String0, core::string_view>::value ||
            ! std::is_convertible<
                String1, core::string_view>::value;


Description

The function is defined only for strings containing low-ASCII characters.

Example

assert( ci_is_equal( "Boost", "boost" ) );

Return Value

true if s0 case-insensitively equals s1, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string

See Also

ci_compare, ci_is_less.

Return true if s0 is less than s1 using case-insensitive comparison

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
bool
ci_is_less(
    core::string_view s0,
    core::string_view s1) noexcept;


Description

The comparison algorithm implements a case-insensitive total order on the set of all strings; however, it is not a lexicographical comparison. The function is defined only for strings containing low-ASCII characters.

Example

assert( ! ci_is_less( "Boost", "boost" ) );

Return Value

true if s0 is case-insensitively less than s1, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string

See Also

ci_compare, ci_is_equal.

delim_rule overloads

Synopses

Declared in <boost/url/grammar/delim_rule.hpp>
Match a character literal
constexpr
/* implementation-defined */
delim_rule(char ch) noexcept;


» more... Match a single character from a character set
template<CharSet CS>
constexpr
/* implementation-defined */
delim_rule(CS const& cs) noexcept
requires ! std::is_convertible<
        CS, char>::value;


» more...

Return Value

  • A rule which matches the character.
  • A rule which matches a single character from the set.

Parameters

Name Description
ch The character to match
cs The character set to use.

See Also

parse, squelch.

alpha_chars, parse, squelch.

Match a character literal

Synopsis

Declared in <boost/url/grammar/delim_rule.hpp>
constexpr
/* implementation-defined */
delim_rule(char ch) noexcept;


Description

This matches the specified character. The value is a reference to the character in the underlying buffer, expressed as a core::string_view. The function squelch may be used to turn this into void instead. If there is no more input, the error code error::need_more is returned.

Value Type

using value_type = core::string_view;

Example

Rules are used with the function parse.

system::result< core::string_view > rv = parse( ".", delim_rule('.') );

BNF

char = %00-FF

Return Value

A rule which matches the character.

Parameters

Name Description
ch The character to match

See Also

parse, squelch.

Match a single character from a character set

Synopsis

Declared in <boost/url/grammar/delim_rule.hpp>
template<CharSet CS>
constexpr
/* implementation-defined */
delim_rule(CS const& cs) noexcept
requires ! std::is_convertible<
        CS, char>::value;


Description

This matches exactly one character which belongs to the specified character set. The value is a reference to the character in the underlying buffer, expressed as a core::string_view. The function squelch may be used to turn this into void instead. If there is no more input, the error code error::need_more is returned.

Value Type

using value_type = core::string_view;

Example

Rules are used with the function parse.

system::result< core::string_view > rv = parse( "X", delim_rule( alpha_chars ) );

Return Value

A rule which matches a single character from the set.

Parameters

Name Description
cs The character set to use.

See Also

alpha_chars, parse, squelch.

Find the first character in the string that is in the set.

Synopsis

Declared in <boost/url/grammar/charset.hpp>
template<CharSet CS>
char const*
find_if(
    char const const* first,
    char const const* last,
    CS const& cs) noexcept;


Description

Exception Safety

Throws nothing.

Return Value

A pointer to the found character, otherwise the value last.

Parameters

Name Description
first A pointer to the first character in the string to search.
last A pointer to one past the last character in the string to search.
cs The character set to use.

See Also

find_if_not.

Find the first character in the string that is not in CharSet

Synopsis

Declared in <boost/url/grammar/charset.hpp>
template<CharSet CS>
char const*
find_if_not(
    char const const* first,
    char const const* last,
    CS const& cs) noexcept;


Description

Exception Safety

Throws nothing.

Return Value

A pointer to the found character, otherwise the value last.

Parameters

Name Description
first A pointer to the first character in the string to search.
last A pointer to one past the last character in the string to search.
cs The character set to use.

See Also

find_if_not.

Return the decimal value of a hex character

Synopsis

Declared in <boost/url/grammar/hexdig_chars.hpp>
signed char
hexdig_value(char ch) noexcept;


Description

This function returns the decimal value of a hexadecimal character, or -1 if the argument is not a valid hexadecimal digit.

BNF

HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" / "a" / "b" / "c" / "d" / "e" / "f"

Return Value

The decimal value or -1

Parameters

Name Description
ch The character to check
Match another rule, if the result is not empty

Synopsis

Declared in <boost/url/grammar/not_empty_rule.hpp>
template<Rule R>
constexpr
/* implementation-defined */
not_empty_rule(R const& r);


Description

This adapts another rule such that when an empty string is successfully parsed, the result is an error.

Value Type

using value_type = typename Rule::value_type;

Example

Rules are used with the function parse.

system::result< decode_view > rv = parse( "Program%20Files", not_empty_rule( pct_encoded_rule( unreserved_chars ) ) );

Return Value

The adapted rule

Parameters

Name Description
r The rule to match

See Also

parse, pct_encoded_rule, unreserved_chars.

Return the union of two character sets.

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
lut_chars
operator+(
    lut_chars const& cs0,
    lut_chars const& cs1) noexcept;


Description

This function returns a new character set which contains all of the characters in cs0 as well as all of the characters in cs.

Example

This creates a character set which includes all letters and numbers

constexpr lut_chars alpha_chars( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"); constexpr lut_chars alnum_chars = alpha_chars + "0123456789";

Complexity

Constant.

Return Value

The new character set.

Parameters

Name Description
cs0 A character to join
cs1 A character to join
Return a new character set by subtracting

Synopsis

Declared in <boost/url/grammar/lut_chars.hpp>
constexpr
lut_chars
operator-(
    lut_chars const& cs0,
    lut_chars const& cs1) noexcept;


Description

This function returns a new character set which is formed from all of the characters in cs0 which are not in cs.

Example

This statement declares a character set containing all the lowercase letters which are not vowels:

constexpr lut_chars consonants = lut_chars("abcdefghijklmnopqrstuvwxyz") - "aeiou";

Complexity

Constant.

Return Value

The new character set.

Parameters

Name Description
cs0 A character set to join.
cs1 A character set to join.
Match a rule, or the empty string

Synopsis

Declared in <boost/url/grammar/optional_rule.hpp>
template<Rule R>
constexpr
/* implementation-defined */
optional_rule(R const& r);


Description

Optional BNF elements are denoted with square brackets. If the specified rule returns any error it is treated as if the rule did not match.

Value Type

using value_type = optional< typename Rule::value_type >;

Example

Rules are used with the function grammar::parse.

system::result< optional< core::string_view > > rv = parse( "", optional_rule( token_rule( alpha_chars ) ) );

BNF

optional = [ rule ]

Specification

Return Value

The adapted rule

Parameters

Name Description
r The rule to match

See Also

alpha_chars, parse, optional, token_rule.

Parse a character buffer using a rule

Synopses

Declared in <boost/url/grammar/parse.hpp>
Parse a character buffer using a rule
template<Rule R>
system::result<R::value_type>
parse(
    core::string_view s,
    R const& r);


» more... Parse a character buffer using a rule
template<Rule R>
system::result<R::value_type>
parse(
    char const*& it,
    char const* end,
    R const& r);


» more...

Return Value

The parsed value upon success, otherwise an error.

Parameters

Name Description
s The input string
r The rule to use
it A pointer to the start. The caller's variable is changed to reflect the amount of input consumed.
end A pointer to the end.
Parse a character buffer using a rule

Synopsis

Declared in <boost/url/grammar/parse.hpp>
template<Rule R>
system::result<R::value_type>
parse(
    core::string_view s,
    R const& r);


Description

This function parses a complete string into the specified sequence of rules. If the string is not completely consumed, an error is returned instead.

Return Value

The parsed value upon success, otherwise an error.

Parameters

Name Description
s The input string
r The rule to use
Parse a character buffer using a rule

Synopsis

Declared in <boost/url/grammar/parse.hpp>
template<Rule R>
system::result<R::value_type>
parse(
    char const*& it,
    char const* end,
    R const& r);


Return Value

The parsed value upon success, otherwise an error.

Parameters

Name Description
it A pointer to the start. The caller's variable is changed to reflect the amount of input consumed.
end A pointer to the end.
r The rule to use
Match a repeating number of elements

Synopses

Declared in <boost/url/grammar/range_rule.hpp>
Match a repeating number of elements
template<Rule R>
constexpr
/* implementation-defined */
range_rule(
    R const& next,
    std::size_t N = 0,
    std::size_t M = std::size_t(-1)) noexcept;


» more... Match a repeating number of elements
template<
    Rule R1,
    Rule R2>
constexpr
/* implementation-defined */
range_rule(
    R1 const& first,
    R2 const& next,
    std::size_t N = 0,
    std::size_t M = std::size_t(-1)) noexcept
requires ! std::is_integral<R2>::value;


» more...

Return Value

A rule that matches the range.

Parameters

Name Description
next The rule to use for matching each element. The range extends until this rule returns an error.
N The minimum number of elements for the range to be valid. If omitted, this defaults to zero.
M The maximum number of elements for the range to be valid. If omitted, this defaults to unlimited.
first The rule to use for matching the first element. If this rule returns an error, the range is empty.

See Also

alpha_chars, delim_rule, error::end_of_range, parse, range, tuple_rule, squelch.

Match a repeating number of elements

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
template<Rule R>
constexpr
/* implementation-defined */
range_rule(
    R const& next,
    std::size_t N = 0,
    std::size_t M = std::size_t(-1)) noexcept;


Description

Elements are matched using the passed rule. Normally when the rule returns an error, the range ends and the input is rewound to one past the last character that matched successfully. However, if the rule returns the special value error::end_of_range, the input is not rewound. This allows for rules which consume input without producing elements in the range. For example, to relax the grammar for a comma-delimited list by allowing extra commas in between elements.

Value Type

using value_type = range< typename Rule::value_type >;

Example

Rules are used with the function parse.

// range = 1*( ";" token ) system::result< range > rv = parse( ";alpha;xray;charlie", range_rule( tuple_rule( squelch( delim_rule( ';' ) ), token_rule( alpha_chars ) ), 1 ) );

BNF

range = *next

Specification

Return Value

A rule that matches the range.

Parameters

Name Description
next The rule to use for matching each element. The range extends until this rule returns an error.
N The minimum number of elements for the range to be valid. If omitted, this defaults to zero.
M The maximum number of elements for the range to be valid. If omitted, this defaults to unlimited.

See Also

alpha_chars, delim_rule, error::end_of_range, parse, range, tuple_rule, squelch.

Match a repeating number of elements

Synopsis

Declared in <boost/url/grammar/range_rule.hpp>
template<
    Rule R1,
    Rule R2>
constexpr
/* implementation-defined */
range_rule(
    R1 const& first,
    R2 const& next,
    std::size_t N = 0,
    std::size_t M = std::size_t(-1)) noexcept
requires ! std::is_integral<R2>::value;


Description

Two rules are used for match. The rule first is used for matching the first element, while the next rule is used to match every subsequent element. Normally when the rule returns an error, the range ends and the input is rewound to one past the last character that matched successfully. However, if the rule returns the special value error::end_of_range, the input is not rewound. This allows for rules which consume input without producing elements in the range. For example, to relax the grammar for a comma-delimited list by allowing extra commas in between elements.

Value Type

using value_type = range< typename Rule::value_type >;

Example

Rules are used with the function parse.

// range = [ token ] *( "," token ) system::result< range< core::string_view > > rv = parse( "whiskey,tango,foxtrot", range_rule( token_rule( alpha_chars ), // first tuple_rule( // next squelch( delim_rule(',') ), token_rule( alpha_chars ) ) ) );

BNF

range = <1>*<1>first / first *next

Specification

Return Value

A rule that matches the range.

Parameters

Name Description
first The rule to use for matching the first element. If this rule returns an error, the range is empty.
next The rule to use for matching each subsequent element. The range extends until this rule returns an error.
N The minimum number of elements for the range to be valid. If omitted, this defaults to zero.
M The maximum number of elements for the range to be valid. If omitted, this defaults to unlimited.

See Also

alpha_chars, delim_rule, error::end_of_range, parse, range, tuple_rule, squelch.

ref overloads

Synopses

Declared in <boost/url/grammar/charset.hpp>
Return a reference to a character set
template<CharSet CS>
constexpr
/* implementation-defined */
ref(CS const& cs) noexcept
requires is_charset<CS>::value &&
    ! std::is_same<CS,
        implementation_defined::charset_ref<CS> >::value;


» more... Return a reference to a rule
template<Rule R>
constexpr
/* implementation-defined */
ref(R const& r) noexcept
requires is_rule<R>::value &&
    ! std::is_same<R,
        implementation_defined::rule_ref<R> >::value;


» more...

Return Value

  • The character set as a reference type
  • The rule as a reference type

Template Parameters

Name Description
CharSet The character set type

Parameters

Name Description
cs The character set to use
r The rule to use
Return a reference to a character set

Synopsis

Declared in <boost/url/grammar/charset.hpp>
template<CharSet CS>
constexpr
/* implementation-defined */
ref(CS const& cs) noexcept
requires is_charset<CS>::value &&
    ! std::is_same<CS,
        implementation_defined::charset_ref<CS> >::value;


Description

This function returns a character set which references the specified object. This is used to reduce the number of bytes of storage (sizeof) required by a combinator when it stores a copy of the object. Ownership of the object is not transferred; the caller is responsible for ensuring the lifetime of the object is extended until it is no longer referenced. For best results, ref should only be used with compile-time constants.

Return Value

The character set as a reference type

Template Parameters

Name Description
CharSet The character set type

Parameters

Name Description
cs The character set to use
Return a reference to a rule

Synopsis

Declared in <boost/url/grammar/parse.hpp>
template<Rule R>
constexpr
/* implementation-defined */
ref(R const& r) noexcept
requires is_rule<R>::value &&
    ! std::is_same<R,
        implementation_defined::rule_ref<R> >::value;


Description

This function returns a rule which references the specified object. This is used to reduce the number of bytes of storage (sizeof) required by a combinator when it stores a copy of the object. Ownership of the object is not transferred; the caller is responsible for ensuring the lifetime of the object is extended until it is no longer referenced. For best results, ref should only be used with compile-time constants.

Return Value

The rule as a reference type

Parameters

Name Description
r The rule to use
Squelch the value of a rule

Synopsis

Declared in <boost/url/grammar/tuple_rule.hpp>
template<Rule R>
constexpr
/* implementation-defined */
squelch(R const& r) noexcept;


Description

This function returns a new rule which matches the specified rule, and converts its value type to void. This is useful for matching delimiters in a grammar, where the value for the delimiter is not needed.

Value Type

using value_type = void;

Example 1

With squelch:

system::result< std::tuple< decode_view, core::string_view > > rv = parse( "www.example.com:443", tuple_rule( pct_encoded_rule(unreserved_chars + '-' + '.'), squelch( delim_rule( ':' ) ), token_rule( digit_chars ) ) );

Example 2

Without squelch:

system::result< std::tuple< decode_view, core::string_view, core::string_view > > rv = parse( "www.example.com:443", tuple_rule( pct_encoded_rule(unreserved_chars + '-' + '.'), delim_rule( ':' ), token_rule( digit_chars ) ) );

Return Value

The squelched rule

Parameters

Name Description
r The rule to squelch

See Also

delim_rule, digit_chars, parse, tuple_rule, token_rule, decode_view, pct_encoded_rule, unreserved_chars.

Return c converted to lowercase

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
constexpr
char
to_lower(char c) noexcept;


Description

This function returns the character, converting it to lowercase if it is uppercase. The function is defined only for low-ASCII characters.

Example

assert( to_lower( 'A' ) == 'a' );

Exception Safety

Throws nothing.

Return Value

The converted character

Parameters

Name Description
c The character to convert

See Also

to_upper.

Return c converted to uppercase

Synopsis

Declared in <boost/url/grammar/ci_string.hpp>
constexpr
char
to_upper(char c) noexcept;


Description

This function returns the character, converting it to uppercase if it is lowercase. The function is defined only for low-ASCII characters.

Example

assert( to_upper( 'a' ) == 'A' );

Exception Safety

Throws nothing.

Return Value

The converted character

Parameters

Name Description
c The character to convert

See Also

to_lower.

Match a non-empty string of characters from a set

Synopsis

Declared in <boost/url/grammar/token_rule.hpp>
template<CharSet CS>
constexpr
/* implementation-defined */
token_rule(CS const& cs) noexcept;


Description

If there is no more input, the error code error::need_more is returned.

Value Type

using value_type = core::string_view;

Example

Rules are used with the function parse.

system::result< core::string_view > rv = parse( "abcdef", token_rule( alpha_chars ) );

BNF

token = 1*( ch )

Return Value

The token rule

Parameters

Name Description
cs The character set to use

See Also

alpha_chars, parse.

Match a series of rules in order

Synopsis

Declared in <boost/url/grammar/tuple_rule.hpp>
template<
    Rule R0,
    Rule... Rn>
constexpr
/* implementation-defined */
tuple_rule(
    R0 const& r0,
    Rn const...&... rn) noexcept;


Description

This matches a series of rules in the order specified. Upon success the input is adjusted to point to the first unconsumed character. There is no implicit specification of linear white space between each rule.

Value Type

using value_type = __see_below__;

The sequence rule usually returns a std::tuple containing the the value_type of each corresponding rule in the sequence, except that void values are removed. However, if there is exactly one non-void value type T, then the sequence rule returns system::result<T> instead of system::result<tuple<...>>.

Example

Rules are used with the function parse.

system::result< std::tuple< unsigned char, unsigned char, unsigned char, unsigned char > > rv = parse( "192.168.0.1", tuple_rule( dec_octet_rule, squelch( delim_rule('.') ), dec_octet_rule, squelch( delim_rule('.') ), dec_octet_rule, squelch( delim_rule('.') ), dec_octet_rule ) );

BNF

sequence = rule1 rule2 rule3...

Specification

Return Value

The sequence rule

Parameters

Name Description
r0 The first rule to match
rn A list of one or more rules to match

See Also

dec_octet_rule, delim_rule, parse, squelch.

Match one of a set of rules

Synopsis

Declared in <boost/url/grammar/variant_rule.hpp>
template<
    Rule R0,
    Rule... Rn>
constexpr
/* implementation-defined */
variant_rule(
    R0 const& r0,
    Rn const...&... rn) noexcept;


Description

Each specified rule is tried in sequence. When the first match occurs, the result is stored and returned in the variant. If no match occurs, an error is returned.

Value Type

using value_type = variant< typename Rules::value_type... >;

Example

Rules are used with the function parse.

// request-target = origin-form // / absolute-form // / authority-form // / asterisk-form system::result< variant< url_view, url_view, authority_view, core::string_view > > rv = grammar::parse( "/index.html?width=full", variant_rule( origin_form_rule, absolute_uri_rule, authority_rule, delim_rule('*') ) );

BNF

variant = rule1 / rule2 / rule3...

Specification

Return Value

The variant rule

Parameters

Name Description
r0 The first rule to match
rn A list of one or more rules to match

See Also

absolute_uri_rule, authority_rule, delim_rule, parse, origin_form_rule, url_view.

Format a string to an output stream

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    string_view_base const& s);


Description

Format a string to an output stream

Return Value

A reference to the output stream, for chaining

Parameters

Name Description
os The output stream to write to
s The string to write
Compare two string views for equality

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
template<
    class S0,
    class S1>
constexpr
bool
operator==(
    S0 const& s0,
    S1 const& s1) noexcept
requires is_match<S0, S1>::value;


Description

This function is only enabled if both arguments are convertible to core::string_view and at least one of the arguments is derived from string_view_base.

Return Value

true if the strings are equal, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string
Compare two string views for inequality

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
template<
    class S0,
    class S1>
constexpr
bool
operator!=(
    S0 const& s0,
    S1 const& s1) noexcept
requires is_match<S0, S1>::value;


Description

This function is only enabled if both arguments are convertible to core::string_view and at least one of the arguments is derived from string_view_base.

Return Value

true if the strings are not equal, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string
Compare two string views for less than

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
template<
    class S0,
    class S1>
constexpr
bool
operator<(
    S0 const& s0,
    S1 const& s1) noexcept
requires is_match<S0, S1>::value;


Description

This function is only enabled if both arguments are convertible to core::string_view and at least one of the arguments is derived from string_view_base.

Return Value

true if the first string is less than the second, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string
Compare two string views for less than or equal

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
template<
    class S0,
    class S1>
constexpr
bool
operator<=(
    S0 const& s0,
    S1 const& s1) noexcept
requires is_match<S0, S1>::value;


Description

This function is only enabled if both arguments are convertible to core::string_view and at least one of the arguments is derived from string_view_base.

Return Value

true if the first string is less than or equal to the second, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string
Compare two string views for greater than

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
template<
    class S0,
    class S1>
constexpr
bool
operator>(
    S0 const& s0,
    S1 const& s1) noexcept
requires is_match<S0, S1>::value;


Description

This function is only enabled if both arguments are convertible to core::string_view and at least one of the arguments is derived from string_view_base.

Return Value

true if the first string is greater than the second, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string
Compare two string views for greater than or equal

Synopsis

Declared in <boost/url/grammar/string_view_base.hpp>
template<
    class S0,
    class S1>
constexpr
bool
operator>=(
    S0 const& s0,
    S1 const& s1) noexcept
requires is_match<S0, S1>::value;


Description

This function is only enabled if both arguments are convertible to core::string_view and at least one of the arguments is derived from string_view_base.

Return Value

true if the first string is greater than or equal to the second, otherwise false

Parameters

Name Description
s0 The first string
s1 The second string
The set of all characters

Synopsis

Declared in <boost/url/grammar/all_chars.hpp>
inline constexpr /* implementation-defined */ all_chars = all_chars{};


Description

Example

Character sets are used with rules and the functions find_if and find_if_not.

system::result< core::string_view > rv = parse( "JohnDoe", token_rule( all_chars ) );

BNF

ALL = %x00-FF

See Also

find_if, find_if_not, parse, token_rule.

The set of letters and digits

Synopsis

Declared in <boost/url/grammar/alnum_chars.hpp>
constexpr /* implementation-defined */ alnum_chars = {};


Description

Example

Character sets are used with rules and the functions find_if and find_if_not.

system::result< core::string_view > = parse( "Johnny42", token_rule( alnumchars ) );

BNF

ALNUM = ALPHA / DIGIT ALPHA = %x41-5A / %x61-7A ; A-Z / a-z DIGIT = %x30-39 ; 0-9

Specification

See Also

find_if, find_if_not, parse, token_rule.

The set of all letters

Synopsis

Declared in <boost/url/grammar/alpha_chars.hpp>
constexpr /* implementation-defined */ alpha_chars = alpha_chars{};


Description

Example

Character sets are used with rules and the functions find_if and find_if_not.

system::result< core::string_view > rv = parse( "JohnDoe", token_rule( alpha_chars ) );

BNF

ALPHA = %x41-5A / %x61-7A ; A-Z / a-z

Specification

See Also

find_if, find_if_not, parse, token_rule.

Match a decimal octet

Synopsis

Declared in <boost/url/grammar/dec_octet_rule.hpp>
constexpr /* implementation-defined */ dec_octet_rule = {};


Description

A decimal octet is precise way of saying a number from 0 to 255. These are commonly used in IPv4 addresses.

Value Type

using value_type = unsigned char;

Example

Rules are used with the function parse.

system::result< unsigned char > rv = parse( "255", dec_octet_rule );

BNF

dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

See Also

parse.

The set of decimal digits

Synopsis

Declared in <boost/url/grammar/digit_chars.hpp>
constexpr /* implementation-defined */ digit_chars = {};


Description

Example

Character sets are used with rules and the functions find_if and find_if_not.

system::result< core::string_view > rv = parse( "2022", token_rule( digit_chars ) );

BNF

DIGIT = %x30-39 ; 0-9

Specification

See Also

find_if, find_if_not, parse, token_rule.

The set of hexadecimal digits

Synopsis

Declared in <boost/url/grammar/hexdig_chars.hpp>
constexpr /* implementation-defined */ hexdig_chars = {};


Description

Example

Character sets are used with rules and the functions find_if and find_if_not.

system::result< core::string_view > rv = parse( "8086FC19", token_rule( hexdig_chars ) );

BNF

HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" / "a" / "b" / "c" / "d" / "e" / "f"

NOTE

The RFCs are inconsistent on the case sensitivity of hexadecimal digits. Existing uses suggest case-insensitivity is a de-facto standard.

Specification

See Also

find_if, find_if_not, hexdig_value, parse, token_rule.

The set of visible characters

Synopsis

Declared in <boost/url/grammar/vchars.hpp>
constexpr /* implementation-defined */ vchars = {};


Description

Example

Character sets are used with rules and the functions find_if and find_if_not.

system::result< core::string_view > rv = parse( "JohnDoe", token_rule( vchars ) );

BNF

VCHAR = 0x21-0x7E ; visible (printing) characters

Specification

See Also

find_if, find_if_not, parse, token_rule.

Concept for a CharSet

Synopsis

Declared in <boost/url/grammar/charset.hpp>
template<class T>
concept CharSet = requires (T const t, char c)
{
    { t(c) } -> std::convertible_to<bool>;
};


Description

A CharSet is a unary predicate which is invocable with this equivalent signature:

bool( char ch ) const noexcept;

The predicate returns true if ch is a member of the set, or false otherwise.

Exemplar

For best results, it is suggested that all constructors and member functions for character sets be marked constexpr.

struct CharSet { bool operator()( char c ) const noexcept; // These are both optional. If either or both are left // unspecified, a default implementation will be used. // char const* find_if( char const* first, char const* last ) const noexcept; char const* find_if_not( char const* first, char const* last ) const noexcept; };

Models

  • alnum_chars
  • alpha_chars
  • digit_chars
  • hexdig_chars
  • lut_chars

See Also

is_charset, find_if, find_if_not.

Concept for a grammar Rule

Synopsis

Declared in <boost/url/grammar/type_traits.hpp>
template<class T>
concept Rule = requires (T t, char const*& it, char const* end)
    {
        typename T::value_type;
        { t.parse(it, end) } -> std::same_as<system::result<typename T::value_type>>;
    };


Description

This concept is satisfied if T is a valid grammar Rule

A Rule defines an algorithm used to match an input buffer of ASCII characters against a set of syntactical specifications.

Each rule represents either a terminal symbol or a composition in the represented grammar.

The library comes with a set of rules for productions typically found in RFC documents. Rules are not invoked directly; instead, rule variables are used with overloads of parse which provide a convenient, uniform front end.

Exemplar

For best results, it is suggested that all constructors for rules be marked constexpr.

struct Rule { struct value_type; constexpr Rule( Rule const& ) noexcept = default; auto parse( char const*& it, char const* end ) const -> result< value_type >; }; // Declare a variable of type Rule for notational convenience constexpr Rule rule{};

Model

  • dec_octet_rule
  • delim_rule
  • not_empty_rule
  • optional_rule
  • range_rule
  • token_rule
  • tuple_rule
  • unsigned_rule
  • variant_rule

See Also

parse, is_rule.

Types

Name Description
arg Base class for string tokens, and algorithm parameters
is_token Trait to determine if a type is a string token
return_string A string token for returning a plain string

Functions

Name Description
append_to Create a string token for appending to a plain string
assign_to Create a string token for assigning to a plain string
preserve_size Create a string token for a durable core::string_view

Concepts

Name Description
StringToken Concept for a string token
Trait to determine if a type is a string token

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
template<class T>
using is_token = /* implementation-defined */;


Description

This trait returns true if T is a valid StringToken type, and false otherwise.

Example

static_assert( string_token::is_token::value );
A string token for returning a plain string

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
using return_string = /* implementation-defined */;


Description

This StringToken is used to customize a function to return a plain string.

This is default token type used by the methods of url_view_base that return decoded strings.

Base class for string tokens, and algorithm parameters

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
struct arg;


Member Functions

Name Description
arg [constructor]Constructors
~arg [destructor] [virtual]Virtual destructor
operator= [deleted]Assignment operators
prepare [virtual]Return a modifiable character buffer

Description

This abstract interface provides a means for an algorithm to generically obtain a modifiable, contiguous character buffer of prescribed size.

A StringToken should be derived from this class. As the author of an algorithm using a StringToken, simply declare an rvalue reference as a parameter type.

Instances of this type are intended only to be used once and then destroyed.

Example

The declared function accepts any temporary instance of arg to be used for writing:

void algorithm( string_token::arg&& dest );

To implement the interface for your type or use-case, derive from the class and implement the prepare function.

Constructors

Synopses

Declared in <boost/url/grammar/string_token.hpp>
Default constructor
constexpr
arg() = default;


» more... Deleted copy constructor
arg(arg const& other) = delete;


» more... Default move constructor
constexpr
arg(arg&& other) = default;


» more...
Default constructor

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
constexpr
arg() = default;


Deleted copy constructor

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
arg(arg const& other) = delete;


Parameters

Name Description
other The object to copy construct from
Default move constructor

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
constexpr
arg(arg&& other) = default;


Parameters

Name Description
other The object to move construct from
Virtual destructor

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
constexpr
virtual
~arg() = default;


Assignment operators

Synopses

Declared in <boost/url/grammar/string_token.hpp>
Deleted copy assignment
arg&
operator=(arg const& other) = delete;


» more... Deleted move assignment
arg&
operator=(arg&& other) = delete;


» more...
Deleted copy assignment

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
arg&
operator=(arg const& other) = delete;


Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from
Deleted move assignment

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
arg&
operator=(arg&& other) = delete;


Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from
Return a modifiable character buffer

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
virtual
char*
prepare(std::size_t n) = 0;


Description

This function attempts to obtain a character buffer with space for at least n characters. Upon success, a pointer to the beginning of the buffer is returned. Ownership is not transferred; the caller should not attempt to free the storage. The buffer shall remain valid until this is destroyed.

NOTE

This function may only be called once. After invoking the function, the only valid operation is destruction.

Return Value

A pointer to the buffer

Parameters

Name Description
n The number of characters needed
Create a string token for appending to a plain string

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
template<class Alloc = std::allocator<char>>
/* implementation-defined */
append_to(std::basic_string<char, std::char_traits<char>, Alloc>& s);


Description

This function creates a StringToken which appends to an existing plain string.

Functions using this token will append the result to the existing string and return a reference to it.

Return Value

A string token

Parameters

Name Description
s The string to append
Create a string token for assigning to a plain string

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
template<class Alloc = std::allocator<char>>
/* implementation-defined */
assign_to(std::basic_string<char, std::char_traits<char>, Alloc>& s);


Description

This function creates a StringToken which assigns to an existing plain string.

Functions using this token will assign the result to the existing string and return a reference to it.

Return Value

A string token

Parameters

Name Description
s The string to assign
Create a string token for a durable core::string_view

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
template<class Alloc = std::allocator<char>>
/* implementation-defined */
preserve_size(std::basic_string<char, std::char_traits<char>, Alloc>& s);


Description

This function creates a StringToken which assigns to an existing plain string.

Functions using this token will assign the result to the existing string and return a core::string_view to it.

Return Value

A string token

Parameters

Name Description
s The string to preserve
Concept for a string token

Synopsis

Declared in <boost/url/grammar/string_token.hpp>
template<class T>
concept StringToken = std::derived_from<T, string_token::arg> &&
    requires (T t, std::size_t n)
{
    typename T::result_type;
    { t.prepare(n) } -> std::same_as<char*>;
    { t.result() } -> std::convertible_to<typename T::result_type>;
};


Description

This concept is satisfied if T is a valid string token type.

A string token is an rvalue passed to a function template which customizes the return type of the function and also controls how a modifiable character buffer is obtained and presented.

The string token's lifetime extends only for the duration of the function call in which it appears as a parameter.

A string token cannot be copied, moved, or assigned, and must be destroyed when the function returns or throws.

Semantics

T::result_type determines the return type of functions that accept a string token.

The prepare() function overrides the virtual function in the base class arg. It must return a pointer to a character buffer of at least size n, otherwise throw an exception. This function is called only once or not at all.

The result() function is invoked by the algorithm to receive the result from the string token. It is only invoked if prepare() returned successfully and the string token was not destroyed. It is only called after prepare() returns successfully, and the string token is destroyed when the algorithm completes or if an exception is thrown.

String tokens cannot be reused.

Exemplars

String token prototype:

struct StringToken : string_token::arg { using result_type = std::string; char* prepare( std::size_t n ) override; result_type result(); };

Algorithm prototype:

namespace detail { // Algorithm implementation may be placed // out of line, and written as an ordinary // function (no template required). void algorithm_impl( string_token::arg& token ) { std::size_t n = 0; // calculate space needed in n // ... // acquire a destination buffer char* dest = token.prepare( n ); // write the characters to the buffer } } // detail // public interface is a function template, // defaulting to return std::string. template< class StringToken = string_token::return_string > auto algorithm( StringToken&& token = {} ) -> typename StringToken::result_type { // invoke the algorithm with the token algorithm_impl( token ); // return the result from the token return token.result(); }

Models

The following classes and functions implement and generate string tokens.

  • return_string
  • assign_to
  • preserve_size
A temporary reference to a formatting argument

Synopsis

Declared in <boost/url/format.hpp>
using format_arg = /* implementation-defined */;


Description

This class represents a temporary reference to a formatting argument used by the format function.

A format argument should always be created by passing the argument to be formatted directly to the format function.

Any type that can be formatted into a URL with the format function is convertible to this type.

This includes basic types, types convertible to core::string_view, and named_arg.

See Also

format, format_to, arg.

A temporary reference to a named formatting argument

Synopsis

Declared in <boost/url/format.hpp>
template<class T>
using named_arg = /* implementation-defined */;


Description

This class represents a temporary reference to a named formatting argument used by the format function.

Named arguments should always be created with the arg function.

Any type that can be formatted into a URL with the format function can also be used in a named argument. All named arguments are convertible to format_arg and can be used in the format function.

See Also

arg, format, format_to, format_arg.

The type of optional used by the library

Synopsis

Declared in <boost/url/optional.hpp>
template<class T>
using optional = boost::optional<T>;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use boost::optional instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

The type of string_view used by the library

Synopsis

Declared in <boost/url/string_view.hpp>
using string_view = boost::core::string_view;


Description

String views are used to pass character buffers into or out of functions. Ownership of the underlying character buffer is not transferred; the caller is responsible for ensuring that the lifetime of character buffer extends until it is no longer referenced.

WARNING

This alias is no longer supported and should not be used in new code. Please use core::string_view instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

The type of variant used by the library

Synopsis

Declared in <boost/url/variant.hpp>
template<class... Ts>
using variant = boost::variant2::variant<Ts...>;


Description

WARNING

This alias is no longer supported and should not be used in new code. Please use boost::variant2::variant instead.

This alias is included for backwards compatibility with earlier versions of the library.

However, it will be removed in future releases, and using it in new code is not recommended.

Please use the updated version instead to ensure compatibility with future versions of the library.

A non-owning reference to a valid authority

Synopsis

Declared in <boost/url/authority_view.hpp>
class authority_view;


Member Functions

Name Description
authority_view [constructor]Constructors
~authority_view [destructor] [virtual]Destructor
operator= Assignment
buffer Return the complete authority
compare Return the result of comparing this with another authority
data Return a pointer to the first character
empty Return true if the authority is empty
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_password Return the password
encoded_user Return the user
encoded_userinfo Return the userinfo
has_password Return true if a password is present
has_port Return true if a port is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
password Return the password
port Return the port
port_number Return the port
size Return the number of characters in the authority
user Return the user
userinfo Return the userinfo

Friends

|===
Name Description
operator<< Format the encoded authority to the output stream
operator>= Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
operator> Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
operator<= Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
operator< Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
operator!= Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
operator== Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Non-Member Functions

Name Description
parse_authorityParse an authority

Description

Objects of this type represent valid authority strings constructed from a parsed, external character buffer whose storage is managed by the caller. That is, it acts like a core::string_view in terms of ownership. The caller is responsible for ensuring that the lifetime of the underlying character buffer extends until it is no longer referenced.

Example 1

Construction from a string parses the input as an authority and throws an exception on error. Upon success, the constructed object points to the passed character buffer; ownership is not transferred.

authority_view a( "user:pass@www.example.com:8080" );

Example 2

The parsing function parse_authority returns a boost::system::result containing either a valid authority_view upon success, otherwise it contains an error. The error can be converted to an exception by the caller if desired:

system::result< authority_view > rv = parse_authority( "user:pass@www.example.com:8080" );

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

See Also

parse_authority.

Constructors

Synopses

Declared in <boost/url/authority_view.hpp>
Constructor
authority_view() noexcept;


» more... Constructor
authority_view(authority_view const& other) noexcept;


» more... Construct from a string.
explicit
authority_view(core::string_view s);


» more...

Parameters

Name Description
s The string to parse

See Also

parse_authority.

Constructor

Synopsis

Declared in <boost/url/authority_view.hpp>
authority_view() noexcept;


Description

Default constructed authorities refer to a string with zero length, which is always valid. This matches the grammar for a zero-length host.

Exception Safety

Throws nothing.

Specification

Constructor

Synopsis

Declared in <boost/url/authority_view.hpp>
authority_view(authority_view const& other) noexcept;


Parameters

Name Description
other The object to copy construct from
Construct from a string.

Synopsis

Declared in <boost/url/authority_view.hpp>
explicit
authority_view(core::string_view s);


Description

This function attempts to construct an authority from the string s, which must be a valid authority or else an exception is thrown. Upon successful construction, the view refers to the characters in the buffer pointed to by s. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until the view is destroyed.

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Parameters

Name Description
s The string to parse

See Also

parse_authority.

Destructor

Synopsis

Declared in <boost/url/authority_view.hpp>
virtual
~authority_view();


Assignment

Synopsis

Declared in <boost/url/authority_view.hpp>
authority_view&
operator=(authority_view const& other) noexcept;


Description

This function assigns the contents of other to this object.

Exception Safety

Throws nothing.

Return Value

A reference to this object

Parameters

Name Description
other The object to assign
Return the complete authority

Synopsis

Declared in <boost/url/authority_view.hpp>
core::string_view
buffer() const noexcept;


Description

This function returns the authority as a percent-encoded string.

Example

assert( parse_authority( "www.example.com" ).value().buffer() == "www.example.com" );

BNF

authority = [ userinfo "@" ] host [ ":" port ]

Exception Safety

Throws nothing.

Specification

Return Value

The complete authority
Return the result of comparing this with another authority

Synopsis

Declared in <boost/url/authority_view.hpp>
int
compare(authority_view const& other) const noexcept;


Description

This function compares two authorities according to Syntax-Based comparison algorithm.

Exception Safety

Throws nothing.

Specification

Return Value

-1 if *this < other, 0 if this == other, and 1 if this > other.

Parameters

Name Description
other The authority to compare
Return a pointer to the first character

Synopsis

Declared in <boost/url/authority_view.hpp>
char const*
data() const noexcept;


Description

This function returns a pointer to the beginning of the view, which is not guaranteed to be null-terminated.

Exception Safety

Throws nothing.

Return Value

A pointer to the first character
Return true if the authority is empty

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
empty() const noexcept;


Description

An empty authority has an empty host, no userinfo, and no port.

Example

assert( authority_view( "" ).empty() );

Exception Safety

Throws nothing.

Return Value

true if the authority is empty
Return the host

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_host() const noexcept;


Description

This function returns the host portion of the authority as a string, or the empty string if there is no authority. The returned string may contain percent escapes.

Example

assert( url_view( "https://www%2droot.example.com/" ).encoded_host() == "www%2droot.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host
Return the host

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_host_address() const noexcept;


Description

The value returned by this function depends on the type of host returned from the function host_type.

  • If the type is host_type::ipv4, then the IPv4 address string is returned.
  • If the type is host_type::ipv6, then the IPv6 address string is returned, without any enclosing brackets.
  • If the type is host_type::ipvfuture, then the IPvFuture address string is returned, without any enclosing brackets.
  • If the type is host_type::name, then the host name string is returned. Any percent-escapes in the string are decoded first.
  • If the type is host_type::none, then an empty string is returned. The returned string may contain percent escapes.

Example

assert( url_view( "https://www%2droot.example.com/" ).encoded_host_address() == "www%2droot.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host address
Return the host and port

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_host_and_port() const noexcept;


Description

If an authority is present, this function returns the host and optional port as a string, which may be empty. Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "http://www.example.com:8080/index.htm" ).encoded_host_and_port() == "www.example.com:8080" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

The host and port

See Also

has_port, port, port_number.

Return the host name

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_host_name() const noexcept;


Description

If the host type is host_type::name, this function returns the name as a string. Otherwise, if the host type is not an name, it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "https://www%2droot.example.com/" ).encoded_host_name() == "www%2droot.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host name
Return the password

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_password() const noexcept;


Description

This function returns the password portion of the userinfo as a percent-encoded string.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).encoded_password() == "pass" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The password

See Also

has_password, has_userinfo, encoded_user, encoded_userinfo, password, user, userinfo.

Return the user

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_user() const noexcept;


Description

If present, this function returns a string representing the user (which may be empty). Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).encoded_user() == "jane%2Ddoe" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The user

See Also

has_password, has_userinfo, encoded_password, encoded_userinfo, password, user, userinfo.

Return the userinfo

Synopsis

Declared in <boost/url/authority_view.hpp>
pct_string_view
encoded_userinfo() const noexcept;


Description

If present, this function returns a string representing the userinfo (which may be empty). Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).encoded_userinfo() == "jane%2Ddoe:pass" );

Complexity

Constant.

Exception Safety

Throws nothing

BNF

userinfo = user [ ":" [ password ] ] authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

The userinfo

See Also

has_password, has_userinfo, encoded_password, encoded_user, password, user, userinfo.

Return true if a password is present

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
has_password() const noexcept;


Description

This function returns true if the userinfo is present and contains a password.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).has_password() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

true if a password is present

See Also

has_userinfo, encoded_password, encoded_user, encoded_userinfo, password, user, userinfo.

Return true if a port is present

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
has_port() const noexcept;


Description

This function returns true if an authority is present and contains a port.

Example

assert( url_view( "wss://www.example.com:443" ).has_port() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

true if a port is present, otherwise false

See Also

encoded_host_and_port, port, port_number.

Return true if a userinfo is present

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
has_userinfo() const noexcept;


Description

This function returns true if this contains a userinfo.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).has_userinfo() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

true if a userinfo is present

See Also

has_password, encoded_password, encoded_user, encoded_userinfo, password, user, userinfo.

Return the host

Synopsis

Declared in <boost/url/authority_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
host(StringToken&& token) const;


Description

This function returns the host portion of the authority as a string, or the empty string if there is no authority. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "https://www%2droot.example.com/" ).host() == "www-root.example.com" );

Complexity

Linear in this->host().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host

Parameters

Name Description
token A string token to receive the result.
Return the host

Synopsis

Declared in <boost/url/authority_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
host_address(StringToken&& token) const;


Description

The value returned by this function depends on the type of host returned from the function host_type.

  • If the type is host_type::ipv4, then the IPv4 address string is returned.
  • If the type is host_type::ipv6, then the IPv6 address string is returned, without any enclosing brackets.
  • If the type is host_type::ipvfuture, then the IPvFuture address string is returned, without any enclosing brackets.
  • If the type is host_type::name, then the host name string is returned. Any percent-escapes in the string are decoded first.
  • If the type is host_type::none, then an empty string is returned.

Example

assert( url_view( "https://[1::6:c0a8:1]/" ).host_address() == "1::6:c0a8:1" );

Complexity

Linear in this->host_address().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host address

Parameters

Name Description
token A string token to receive the result.
Return the host IPv4 address

Synopsis

Declared in <boost/url/authority_view.hpp>
ipv4_address
host_ipv4_address() const noexcept;


Description

If the host type is host_type::ipv4, this function returns the address as a value of type ipv4_address. Otherwise, if the host type is not an IPv4 address, it returns a default-constructed value which is equal to the unspecified address "0.0.0.0".

Example

assert( url_view( "http://127.0.0.1/index.htm?user=win95" ).host_ipv4_address() == ipv4_address( "127.0.0.1" ) );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

Return Value

The host IPv4 address
Return the host IPv6 address

Synopsis

Declared in <boost/url/authority_view.hpp>
ipv6_address
host_ipv6_address() const noexcept;


Description

If the host type is host_type::ipv6, this function returns the address as a value of type ipv6_address. Otherwise, if the host type is not an IPv6 address, it returns a default-constructed value which is equal to the unspecified address "0:0:0:0:0:0:0:0".

Example

assert( url_view( "ftp://[::1]/" ).host_ipv6_address() == ipv6_address( "::1" ) );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

Return Value

The host IPv6 address
Return the host IPvFuture address

Synopsis

Declared in <boost/url/authority_view.hpp>
core::string_view
host_ipvfuture() const noexcept;


Description

If the host type is host_type::ipvfuture, this function returns the address as a string. Otherwise, if the host type is not an IPvFuture address, it returns an empty string.

Example

assert( url_view( "http://[v1fe.d:9]/index.htm" ).host_ipvfuture() == "v1fe.d:9" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

Specification

Return Value

The host IPvFuture address
Return the host name

Synopsis

Declared in <boost/url/authority_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
host_name(StringToken&& token) const;


Description

If the host type is host_type::name, this function returns the name as a string. Otherwise, if the host type is not a name, it returns an empty string. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "https://www%2droot.example.com/" ).host_name() == "www-root.example.com" );

Complexity

Linear in this->host_name().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host name

Parameters

Name Description
token A string token to receive the result
Return the host type

Synopsis

Declared in <boost/url/authority_view.hpp>
urls::host_type
host_type() const noexcept;


Description

This function returns one of the following constants representing the type of host present.

  • host_type::ipv4
  • host_type::ipv6
  • host_type::ipvfuture
  • host_type::name

Example

assert( url_view( "https://192.168.0.1/local.htm" ).host_type() == host_type::ipv4 );

Complexity

Constant.

Exception Safety

Throws nothing.

Specification

Return Value

The host type
Return the password

Synopsis

Declared in <boost/url/authority_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
password(StringToken&& token) const;


Description

If present, this function returns a string representing the password (which may be an empty string). Otherwise it returns an empty string. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).password() == "pass" );

Complexity

Linear in this->password().size().

Exception Safety

Calls to allocate may throw.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The password

Parameters

Name Description
token A string token to receive the result.

See Also

has_password, has_userinfo, encoded_password, encoded_user, encoded_userinfo, user, userinfo.

Return the port

Synopsis

Declared in <boost/url/authority_view.hpp>
core::string_view
port() const noexcept;


Description

If present, this function returns a string representing the port (which may be empty). Otherwise it returns an empty string.

Example

assert( url_view( "http://localhost.com:8080" ).port() == "8080" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

port = *DIGIT

Specification

Return Value

The port as a string

See Also

encoded_host_and_port, has_port, port_number.

Return the port

Synopsis

Declared in <boost/url/authority_view.hpp>
uint16_t
port_number() const noexcept;


Description

If a port is present and the numerical value is representable, it is returned as an unsigned integer. Otherwise, the number zero is returned.

Example

assert( url_view( "http://localhost.com:8080" ).port_number() == 8080 );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

port = *DIGIT

Specification

Return Value

The port number

See Also

encoded_host_and_port, has_port, port.

Return the number of characters in the authority

Synopsis

Declared in <boost/url/authority_view.hpp>
std::size_t
size() const noexcept;


Description

This function returns the number of characters in the authority.

Example

assert( authority_view( "user:pass@www.example.com:8080" ).size() == 30 );

Exception Safety

Throws nothing.

Return Value

The number of characters in the authority
Return the user

Synopsis

Declared in <boost/url/authority_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
user(StringToken&& token) const;


Description

If present, this function returns a string representing the user (which may be empty). Otherwise it returns an empty string. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).user() == "jane-doe" );

Complexity

Linear in this->user().size().

Exception Safety

Calls to allocate may throw.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The user

Parameters

Name Description
token A string token to receive the result.

See Also

has_password, has_userinfo, encoded_password, encoded_user, encoded_userinfo, password, userinfo.

Return the userinfo

Synopsis

Declared in <boost/url/authority_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
userinfo(StringToken&& token) const;


Description

If present, this function returns a string representing the userinfo (which may be empty). Otherwise it returns an empty string. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).userinfo() == "jane-doe:pass" );

Complexity

Linear in this->userinfo().size().

Exception Safety

Calls to allocate may throw.

BNF

userinfo = user [ ":" [ password ] ] authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

The userinfo

Parameters

Name Description
token A string token to receive the result.

See Also

has_password, has_userinfo, encoded_password, encoded_user, encoded_userinfo, password, user.

A reference to a valid, percent-encoded string

Synopsis

Declared in <boost/url/decode_view.hpp>
class decode_view;


Types

Name Description
iterator An iterator of constant, decoded characters.
const_iterator An iterator of constant, decoded characters.
const_reference The reference type
difference_type The signed integer type
reference The reference type
size_type The unsigned integer type
value_type The value type

Member Functions

Name Description
decode_view [constructor]Constructor
back Return the last character
begin Return an iterator to the beginning
compare Return the result of comparing to another string
empty Return true if the string is empty
end Return an iterator to the end
ends_with Checks if the string ends with the given prefix
find Finds the first occurrence of character in this view
front Return the first character
options Return the decoding options
remove_prefix Remove the first characters
remove_suffix Remove the last characters
rfind Finds the first occurrence of character in this view
size Return the number of decoded characters
starts_with Checks if the string begins with the given prefix

Friends

|===
Name Description
operator<< Format the string with percent-decoding applied to the output stream
operator>= Compare two decode views for greater than or equal
operator>= Compare two decode views for greater than or equal
operator>= Compare two decode views for greater than or equal
operator> Compare two decode views for greater than
operator> Compare two decode views for greater than
operator> Compare two decode views for greater than
operator<= Compare two decode views for less than or equal
operator<= Compare two decode views for less than or equal
operator<= Compare two decode views for less than or equal
operator< Compare two decode views for less than
operator< Compare two decode views for less than
operator< Compare two decode views for less than
operator!= Compare two decode views for inequality
operator!= Compare two decode views for inequality
operator!= Compare two decode views for inequality
operator== Compare two decode views for equality
operator== Compare two decode views for equality
operator== Compare two decode views for equality

Description

These views reference strings in parts of URLs or other components that are percent-encoded. The special characters (those not in the allowed character set) are stored as three character escapes that consist of a percent sign ('%%') followed by a two-digit hexadecimal number of the corresponding unescaped character code, which may be part of a UTF-8 code point depending on the context.

The view refers to the original character buffer and only decodes escaped sequences when needed. In particular these operations perform percent-decoding automatically without the need to allocate memory:

  • Iteration of the string
  • Accessing the encoded character buffer
  • Comparison to encoded or plain strings

These objects can only be constructed from strings that have a valid percent-encoding, otherwise construction fails. The caller is responsible for ensuring that the lifetime of the character buffer from which the view is constructed extends unmodified until the view is no longer accessed.

An iterator of constant, decoded characters.

Synopsis

Declared in <boost/url/decode_view.hpp>
using const_iterator = iterator;


Description

This iterator is used to access the encoded string as a bidirectional range of characters with percent-decoding applied. Escape sequences are not decoded until the iterator is dereferenced.

The reference type

Synopsis

Declared in <boost/url/decode_view.hpp>
using const_reference = char;


The signed integer type

Synopsis

Declared in <boost/url/decode_view.hpp>
using difference_type = std::ptrdiff_t;


The reference type

Synopsis

Declared in <boost/url/decode_view.hpp>
using reference = char;


The unsigned integer type

Synopsis

Declared in <boost/url/decode_view.hpp>
using size_type = std::size_t;


The value type

Synopsis

Declared in <boost/url/decode_view.hpp>
using value_type = char;


An iterator of constant, decoded characters.

Synopsis

Declared in <boost/url/decode_view.hpp>
class iterator { /* see-below */ };


Friends

|===
Name Description
decode_view A reference to a valid, percent-encoded string

Description

This iterator is used to access the encoded string as a bidirectional range of characters with percent-decoding applied. Escape sequences are not decoded until the iterator is dereferenced.

Constructor

Synopses

Declared in <boost/url/decode_view.hpp>
Constructor
constexpr
decode_view() noexcept = default;


» more... Constructor
constexpr
explicit
decode_view(
    pct_string_view s,
    encoding_opts opt = {}) noexcept;


» more...

Parameters

Name Description
s A percent-encoded string that has already been validated. Implicit conversion from other string types is supported but may throw exceptions.
opt The options for decoding. If this parameter is omitted, the default options are used.
Constructor

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
decode_view() noexcept = default;


Description

Default-constructed views represent empty strings.

Example

decode_view ds;

Postconditions

this->empty() == true

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
explicit
decode_view(
    pct_string_view s,
    encoding_opts opt = {}) noexcept;


Description

This constructs a view from the character buffer s, which must remain valid and unmodified until the view is no longer accessed.

Example

decode_view ds( "Program%20Files" );

Postconditions

this->encoded() == s

Complexity

Linear in s.size().

Exception Safety

Although this function does not throw exceptions, implicitly constructing a pct_string_view for the first argument can throw exceptions on invalid input.

Parameters

Name Description
s A percent-encoded string that has already been validated. Implicit conversion from other string types is supported but may throw exceptions.
opt The options for decoding. If this parameter is omitted, the default options are used.
Return the last character

Synopsis

Declared in <boost/url/decode_view.hpp>
reference
back() const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).back() == 's' );

Preconditions

not this->empty()

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The last decoded character
Return an iterator to the beginning

Synopsis

Declared in <boost/url/decode_view.hpp>
iterator
begin() const noexcept;


Description

Example

auto it = this->begin();

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

An iterator to the first decoded character
Return the result of comparing to another string

Synopses

Declared in <boost/url/decode_view.hpp>
Return the result of comparing to another string
constexpr
int
compare(decode_view other) const noexcept;


» more... Return the result of comparing to another string
constexpr
int
compare(core::string_view other) const noexcept;


» more...

Return Value

Negative value if this string is less than the other character sequence, zero if the both character sequences are equal, positive value if this string is greater than the other character sequence

Parameters

Name Description
other string to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
int
compare(decode_view other) const noexcept;


Description

The length of the sequences to compare is the smaller of size() and other.size().

The function compares the two strings as if by calling char_traits<char>::compare(to_string().data(), v.to_string().data(), rlen). This means the comparison is performed with percent-decoding applied to the current string.

Return Value

Negative value if this string is less than the other character sequence, zero if the both character sequences are equal, positive value if this string is greater than the other character sequence

Parameters

Name Description
other string to compare
Return the result of comparing to another string

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
int
compare(core::string_view other) const noexcept;


Description

The length of the sequences to compare is the smaller of size() and other.size().

The function compares the two strings as if by calling char_traits<char>::compare(to_string().data(), v.data(), rlen). This means the comparison is performed with percent-decoding applied to the current string.

Return Value

Negative value if this string is less than the other character sequence, zero if the both character sequences are equal, positive value if this string is greater than the other character sequence

Parameters

Name Description
other string to compare
Return true if the string is empty

Synopsis

Declared in <boost/url/decode_view.hpp>
bool
empty() const noexcept;


Description

Example

assert( decode_view( "" ).empty() );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if the string is empty
Return an iterator to the end

Synopsis

Declared in <boost/url/decode_view.hpp>
iterator
end() const noexcept;


Description

Example

auto it = this->end();

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

An iterator to one past the last decoded character
Checks if the string ends with the given prefix

Synopses

Declared in <boost/url/decode_view.hpp>
Checks if the string ends with the given prefix
bool
ends_with(core::string_view s) const noexcept;


» more... Checks if the string ends with the given prefix
bool
ends_with(char ch) const noexcept;


» more...

Return Value

  • true if the decoded string ends with s
  • true if the decoded string ends with ch

Parameters

Name Description
s The string to search for
ch The character to search for
Checks if the string ends with the given prefix

Synopsis

Declared in <boost/url/decode_view.hpp>
bool
ends_with(core::string_view s) const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).ends_with("Files") );

Complexity

Linear.

Exception Safety

Throws nothing.

Return Value

true if the decoded string ends with s

Parameters

Name Description
s The string to search for
Checks if the string ends with the given prefix

Synopsis

Declared in <boost/url/decode_view.hpp>
bool
ends_with(char ch) const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).ends_with('s') );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if the decoded string ends with ch

Parameters

Name Description
ch The character to search for
Finds the first occurrence of character in this view

Synopsis

Declared in <boost/url/decode_view.hpp>
const_iterator
find(char ch) const noexcept;


Description

Complexity

Linear.

Exception Safety

Throws nothing.

Return Value

An iterator to the first decoded occurrence of ch or end()

Parameters

Name Description
ch The character to search for
Return the first character

Synopsis

Declared in <boost/url/decode_view.hpp>
reference
front() const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).front() == 'P' );

Preconditions

not this->empty()

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The first decoded character
Return the decoding options

Synopsis

Declared in <boost/url/decode_view.hpp>
encoding_opts
options() const noexcept;


Return Value

The decoding options used by this view
Remove the first characters

Synopsis

Declared in <boost/url/decode_view.hpp>
void
remove_prefix(size_type n);


Description

Example

decode_view d( "Program%20Files" ); d.remove_prefix( 8 ); assert( d == "Files" );

Preconditions

not this->empty()

Complexity

Linear.

Parameters

Name Description
n The number of characters to remove
Remove the last characters

Synopsis

Declared in <boost/url/decode_view.hpp>
void
remove_suffix(size_type n);


Description

Example

decode_view d( "Program%20Files" ); d.remove_prefix( 6 ); assert( d == "Program" );

Preconditions

not this->empty()

Complexity

Linear.

Parameters

Name Description
n The number of characters to remove
Finds the first occurrence of character in this view

Synopsis

Declared in <boost/url/decode_view.hpp>
const_iterator
rfind(char ch) const noexcept;


Description

Complexity

Linear.

Exception Safety

Throws nothing.

Return Value

An iterator to the last occurrence of ch or end()

Parameters

Name Description
ch The character to search for
Return the number of decoded characters

Synopsis

Declared in <boost/url/decode_view.hpp>
size_type
size() const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).size() == 13 );

Effects

return std::distance( this->begin(), this->end() );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of decoded characters
Checks if the string begins with the given prefix

Synopses

Declared in <boost/url/decode_view.hpp>
Checks if the string begins with the given prefix
bool
starts_with(core::string_view s) const noexcept;


» more... Checks if the string begins with the given prefix
bool
starts_with(char ch) const noexcept;


» more...

Return Value

  • true if the decoded string starts with s
  • true if the decoded string starts with ch

Parameters

Name Description
s The string to search for
ch The character to search for
Checks if the string begins with the given prefix

Synopsis

Declared in <boost/url/decode_view.hpp>
bool
starts_with(core::string_view s) const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).starts_with("Program") );

Complexity

Linear.

Exception Safety

Throws nothing.

Return Value

true if the decoded string starts with s

Parameters

Name Description
s The string to search for
Checks if the string begins with the given prefix

Synopsis

Declared in <boost/url/decode_view.hpp>
bool
starts_with(char ch) const noexcept;


Description

Example

assert( decode_view( "Program%20Files" ).starts_with('P') );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if the decoded string starts with ch

Parameters

Name Description
ch The character to search for
Percent-encoding options

Synopsis

Declared in <boost/url/encoding_opts.hpp>
struct encoding_opts;


Member Functions

Name Description
encoding_opts [constructor]Constructs an encoding_opts object with the specified options.

Data Members

Name Description
disallow_null True if nulls are not allowed
lower_case True if hexadecimal digits are emitted as lower case
space_as_plus True if spaces encode to and from plus signs

Description

These options are used to customize the behavior of algorithms which use percent escapes, such as encoding or decoding.

See Also

encode, encoded_size, pct_string_view.

Constructs an encoding_opts object with the specified options.

Synopsis

Declared in <boost/url/encoding_opts.hpp>
constexpr
encoding_opts(
    bool const space_as_plus = false,
    bool const lower_case = false,
    bool const disallow_null = false) noexcept;


Parameters

Name Description
space_as_plus If true, spaces will be encoded as plus signs.
lower_case If true, hexadecimal digits will be emitted as lower case.
disallow_null If true, null characters will not be allowed.
True if nulls are not allowed

Synopsis

Declared in <boost/url/encoding_opts.hpp>
bool disallow_null = false;


Description

Normally all possible character values (from 0 to 255) are allowed, with reserved characters being replaced with escapes upon encoding. When this option is true, attempting to decode a null will result in an error.

True if hexadecimal digits are emitted as lower case

Synopsis

Declared in <boost/url/encoding_opts.hpp>
bool lower_case = false;


Description

By default, percent-encoding algorithms emit hexadecimal digits A through F as uppercase letters. When this option is true, lowercase letters are used.

True if spaces encode to and from plus signs

Synopsis

Declared in <boost/url/encoding_opts.hpp>
bool space_as_plus = false;


Description

Although not prescribed by RFC 3986, many applications decode plus signs in URL queries as spaces. In particular, the form-urlencoded Media Type in HTML for submitting forms uses this convention.

This option controls whether the PLUS character ("+") is used to represent the SP character (" ") when encoding or decoding.

When this option is true, both the encoded SP ("%20") and the PLUS character ("+") represent a space (" ") when decoding. To represent a plus sign, its encoded form ("%2B") is used.

The encode and encoded_size functions will encode spaces as plus signs when this option is true, regardless of the allowed character set. They will also encode plus signs as "%2B" when this option is true, regardless of the allowed character set.

Note that when a URL is normalized, all unreserved percent-encoded characters are replaced with their unreserved equivalents. However, normalizing the URL query maintains the decoded and encoded "&=+" as they are because they might have different meanings.

This behavior is not optional because normalization can only mitigate false negatives, but it should eliminate false positives. Making it optional would allow a false positive because there's at least one very relevant schema (HTTP) where a decoded or encoded "&=+" has different meanings and represents different resources.

The same considerations apply to URL comparison algorithms in the library, as they treat URLs as if they were normalized.

Specification

An optional parameter to determine case-sensitivity

Synopsis

Declared in <boost/url/ignore_case.hpp>
class ignore_case_param;


Member Functions

Name Description
ignore_case_param [constructor]Constructor
operator bool True if an algorithm should ignore case

Description

Functions may use parameters of this type to allow the user to optionally indicate that comparisons should be case-insensitive when the value ignore_case is passed.

See Also

params_ref

Constructor

Synopses

Declared in <boost/url/ignore_case.hpp>
Constructor
constexpr
ignore_case_param() noexcept = default;


» more... Constructor
constexpr
ignore_case_param(/* implementation-defined */ value) noexcept;


» more...
Constructor

Synopsis

Declared in <boost/url/ignore_case.hpp>
constexpr
ignore_case_param() noexcept = default;


Description

By default, comparisons are case-sensitive.

Example

This function performs case-sensitive comparisons when called with no arguments:

void f( ignore_case_param = {} );
Constructor

Synopsis

Declared in <boost/url/ignore_case.hpp>
constexpr
ignore_case_param(/* implementation-defined */ value) noexcept;


Description

Construction from ignore_case indicates that comparisons should be case-insensitive.

The first parameter to this function should be the variable ignore_case.

Example

When ignore_case is passed as an argument, this function ignores case when performing comparisons:

void f( ignore_case_param(ignore_case) );

Parameters

Name Description
value The object to construct from
True if an algorithm should ignore case

Synopsis

Declared in <boost/url/ignore_case.hpp>
operator bool() const noexcept;


Description

Values of type ignore_case_param evaluate to true when constructed with the constant ignore_case. Otherwise, they are default-constructed and evaluate to false.

Return Value

true if case should be ignored
An IP version 4 style address.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
class ipv4_address;


Types

Name Description
bytes_type The type used to represent an address as an array of bytes
uint_type The type used to represent an address as an unsigned integer

Member Functions

Name Description
ipv4_address [constructor]Constructors
operator= Copy Assignment.
is_loopback Return true if the address is a loopback address
is_multicast Return true if the address is a multicast address
is_unspecified Return true if the address is unspecified
to_buffer Write a dotted decimal string representing the address to a buffer
to_bytes Return the address as bytes, in network byte order.
to_string Return the address as a string in dotted decimal format
to_uint Return the address as an unsigned integer.

Static Member Functions

Name Description
any Return an address object that represents any address
broadcast Return an address object that represents the broadcast address
loopback Return an address object that represents the loopback address

Static Data Members

Name Description
max_str_len The number of characters in the longest possible IPv4 string.

Friends

|===
Name Description
ipv6_address An IP version 6 style address.
operator<< Format the address to an output stream.
operator!= Return true if two addresses are not equal
operator== Return true if two addresses are equal

Non-Member Functions

Name Description
parse_ipv4_addressReturn an IPv4 address from an IP address string in dotted decimal form

Description

Objects of this type are used to construct, parse, and manipulate IP version 6 addresses.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

See Also

parse_ipv4_address, ipv6_address.

The type used to represent an address as an array of bytes

Synopsis

Declared in <boost/url/ipv4_address.hpp>
using bytes_type = std::array<unsigned char, 4>;


The type used to represent an address as an unsigned integer

Synopsis

Declared in <boost/url/ipv4_address.hpp>
using uint_type = uint_least32_t;


Constructors

Synopses

Declared in <boost/url/ipv4_address.hpp>
Constructor.
constexpr
ipv4_address() = default;


» more... Constructor.
constexpr
ipv4_address(ipv4_address const& other) = default;


» more... Construct from a string.
explicit
ipv4_address(core::string_view s);


» more... Construct from an unsigned integer.
explicit
ipv4_address(uint_type u) noexcept;


» more... Construct from an array of bytes.
explicit
ipv4_address(bytes_type const& bytes) noexcept;


» more...

Exceptions

Name Thrown on
system_error The input failed to parse correctly.

Parameters

Name Description
s The string to parse.
u The integer to construct from.
bytes The value to construct from.

See Also

parse_ipv4_address.

Constructor.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
constexpr
ipv4_address() = default;


Constructor.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
constexpr
ipv4_address(ipv4_address const& other) = default;


Parameters

Name Description
other The object to copy construct from
Construct from a string.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
explicit
ipv4_address(core::string_view s);


Description

This function constructs an address from the string s, which must contain a valid IPv4 address string or else an exception is thrown.

NOTE

For a non-throwing parse function, use parse_ipv4_address.

Exception Safety

Exceptions thrown on invalid input.

Specification

Exceptions

Name Thrown on
system_error The input failed to parse correctly.

Parameters

Name Description
s The string to parse.

See Also

parse_ipv4_address.

Construct from an unsigned integer.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
explicit
ipv4_address(uint_type u) noexcept;


Description

This function constructs an address from the unsigned integer u, where the most significant byte forms the first octet of the resulting address.

Parameters

Name Description
u The integer to construct from.
Construct from an array of bytes.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
explicit
ipv4_address(bytes_type const& bytes) noexcept;


Description

This function constructs an address from the array in bytes, which is interpreted in big-endian.

Parameters

Name Description
bytes The value to construct from.
Copy Assignment.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
constexpr
ipv4_address&
operator=(ipv4_address const& other) = default;


Return Value

A reference to this object.

Parameters

Name Description
other The object to copy.
Return true if the address is a loopback address

Synopsis

Declared in <boost/url/ipv4_address.hpp>
bool
is_loopback() const noexcept;


Return Value

true if the address is a loopback address
Return true if the address is a multicast address

Synopsis

Declared in <boost/url/ipv4_address.hpp>
bool
is_multicast() const noexcept;


Return Value

true if the address is a multicast address
Return true if the address is unspecified

Synopsis

Declared in <boost/url/ipv4_address.hpp>
bool
is_unspecified() const noexcept;


Return Value

true if the address is unspecified
Write a dotted decimal string representing the address to a buffer

Synopsis

Declared in <boost/url/ipv4_address.hpp>
core::string_view
to_buffer(
    char* dest,
    std::size_t dest_size) const;


Description

The resulting buffer is not null-terminated.

Exceptions

Name Thrown on
std::length_error dest_size < ipv4_address::max_str_len

Return Value

The formatted string

Parameters

Name Description
dest The buffer in which to write, which must have at least dest_size space.
dest_size The size of the output buffer.
Return the address as bytes, in network byte order.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
bytes_type
to_bytes() const noexcept;


Return Value

The address as an array of bytes.
Return the address as a string in dotted decimal format

Synopsis

Declared in <boost/url/ipv4_address.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
to_string(StringToken&& token = {}) const;


Description

When called with no arguments, the return type is std::string. Otherwise, the return type and style of output is determined by which string token is passed.

Example

assert( ipv4_address(0x01020304).to_string() == "1.2.3.4" );

Complexity

Constant.

Exception Safety

Strong guarantee. Calls to allocate may throw. String tokens may throw exceptions.

Specification

Return Value

The return type of the string token. If the token parameter is omitted, then a new std::string is returned. Otherwise, the function return type is the result type of the token.

Parameters

Name Description
token An optional string token.
Return the address as an unsigned integer.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
uint_type
to_uint() const noexcept;


Return Value

The address as an unsigned integer.
Return an address object that represents any address

Synopsis

Declared in <boost/url/ipv4_address.hpp>
static
ipv4_address
any() noexcept;


Return Value

The any address.
Return an address object that represents the broadcast address

Synopsis

Declared in <boost/url/ipv4_address.hpp>
static
ipv4_address
broadcast() noexcept;


Return Value

The broadcast address.
Return an address object that represents the loopback address

Synopsis

Declared in <boost/url/ipv4_address.hpp>
static
ipv4_address
loopback() noexcept;


Return Value

The loopback address.
The number of characters in the longest possible IPv4 string.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
inline constexpr static
std::size_t max_str_len = 15;


Description

The longest ipv4 address string is "255.255.255.255".

An IP version 6 style address.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
class ipv6_address;


Types

Name Description
bytes_type The type used to represent an address as an array of bytes.

Member Functions

Name Description
ipv6_address [constructor]Constructors
operator= Copy Assignment
is_loopback Return true if the address is a loopback address
is_unspecified Return true if the address is unspecified
is_v4_mapped Return true if the address is a mapped IPv4 address
to_buffer Write a dotted decimal string representing the address to a buffer
to_bytes Return the address as bytes, in network byte order
to_string Return the address as a string.

Static Member Functions

Name Description
loopback Return an address object that represents the loopback address

Static Data Members

Name Description
max_str_len The number of characters in the longest possible IPv6 string.

Friends

|===
Name Description
operator<< Format the address to an output stream
operator!= Return true if two addresses are not equal
operator== Return true if two addresses are equal

Non-Member Functions

Name Description
parse_ipv6_addressParse a string containing an IPv6 address.

Description

Objects of this type are used to construct, parse, and manipulate IP version 6 addresses.

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

See Also

ipv4_address, parse_ipv6_address.

The type used to represent an address as an array of bytes.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
using bytes_type = std::array<unsigned char, 16>;


Description

Octets are stored in network byte order.

Constructors

Synopses

Declared in <boost/url/ipv6_address.hpp>
Constructor.
constexpr
ipv6_address() = default;


» more... Constructor.
constexpr
ipv6_address(ipv6_address const& other) = default;


» more... Construct from a string.
ipv6_address(core::string_view s);


» more... Construct from an array of bytes.
ipv6_address(bytes_type const& bytes) noexcept;


» more... Construct from an IPv4 address.
ipv6_address(ipv4_address const& addr) noexcept;


» more...

Exceptions

Name Thrown on
system_error The input failed to parse correctly.

Parameters

Name Description
s The string to parse.
bytes The value to construct from.
addr The address to construct from.

See Also

is_unspecified

parse_ipv6_address.

Constructor.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
constexpr
ipv6_address() = default;


Description

Default constructed objects represent the unspecified address.

See Also

is_unspecified

Constructor.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
constexpr
ipv6_address(ipv6_address const& other) = default;


Parameters

Name Description
other The object to copy construct from
Construct from a string.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
ipv6_address(core::string_view s);


Description

This function constructs an address from the string s, which must contain a valid IPv6 address string or else an exception is thrown.

NOTE

For a non-throwing parse function, use parse_ipv6_address.

Exception Safety

Exceptions thrown on invalid input.

Specification

Exceptions

Name Thrown on
system_error The input failed to parse correctly.

Parameters

Name Description
s The string to parse.

See Also

parse_ipv6_address.

Construct from an array of bytes.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
ipv6_address(bytes_type const& bytes) noexcept;


Description

This function constructs an address from the array in bytes, which is interpreted in big-endian.

Parameters

Name Description
bytes The value to construct from.
Construct from an IPv4 address.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
ipv6_address(ipv4_address const& addr) noexcept;


Description

This function constructs an IPv6 address from the IPv4 address addr. The resulting address is an IPv4-Mapped IPv6 Address.

Specification

Parameters

Name Description
addr The address to construct from.
Copy Assignment

Synopsis

Declared in <boost/url/ipv6_address.hpp>
constexpr
ipv6_address&
operator=(ipv6_address const& other) = default;


Return Value

*this

Parameters

Name Description
other The object to copy assign from
Return true if the address is a loopback address

Synopsis

Declared in <boost/url/ipv6_address.hpp>
bool
is_loopback() const noexcept;


Description

The unicast address 0:0:0:0:0:0:0:1 is called the loopback address. It may be used by a node to send an IPv6 packet to itself.

Specification

Return Value

true if the address is a loopback address
Return true if the address is unspecified

Synopsis

Declared in <boost/url/ipv6_address.hpp>
bool
is_unspecified() const noexcept;


Description

The address 0:0:0:0:0:0:0:0 is called the unspecified address. It indicates the absence of an address.

Specification

Return Value

true if the address is unspecified
Return true if the address is a mapped IPv4 address

Synopsis

Declared in <boost/url/ipv6_address.hpp>
bool
is_v4_mapped() const noexcept;


Description

This address type is used to represent the addresses of IPv4 nodes as IPv6 addresses.

Specification

Return Value

true if the address is a mapped IPv4 address
Write a dotted decimal string representing the address to a buffer

Synopsis

Declared in <boost/url/ipv6_address.hpp>
core::string_view
to_buffer(
    char* dest,
    std::size_t dest_size) const;


Description

The resulting buffer is not null-terminated.

Exceptions

Name Thrown on
std::length_error dest_size < ipv6_address::max_str_len

Return Value

The formatted string

Parameters

Name Description
dest The buffer in which to write, which must have at least dest_size space.
dest_size The size of the output buffer.
Return the address as bytes, in network byte order

Synopsis

Declared in <boost/url/ipv6_address.hpp>
bytes_type
to_bytes() const noexcept;


Return Value

The address as an array of bytes.
Return the address as a string.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
to_string(StringToken&& token) const;


Description

The returned string does not contain surrounding square brackets.

When called with no arguments, the return type is std::string. Otherwise, the return type and style of output is determined by which string token is passed.

Example

ipv6_address::bytes_type b = {{ 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8 }}; ipv6_address a(b); assert(a.to_string() == "1:2:3:4:5:6:7:8"); assert( ipv4_address(0x01020304).to_string() == "1.2.3.4" );

Complexity

Constant.

Exception Safety

Strong guarantee. Calls to allocate may throw. String tokens may throw exceptions.

Specification

Return Value

The return type of the string token. If the token parameter is omitted, then a new std::string is returned. Otherwise, the function return type is the result type of the token.

Parameters

Name Description
token An optional string token.
Return an address object that represents the loopback address

Synopsis

Declared in <boost/url/ipv6_address.hpp>
static
ipv6_address
loopback() noexcept;


Description

The unicast address 0:0:0:0:0:0:0:1 is called the loopback address. It may be used by a node to send an IPv6 packet to itself.

Specification

Return Value

The loopback address.
The number of characters in the longest possible IPv6 string.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
inline constexpr static
std::size_t max_str_len = 49;


Description

The longest IPv6 address is:

ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

See Also

to_buffer.

The type of no_value

Synopsis

Declared in <boost/url/param.hpp>
struct no_value_t { /* see-below */ };


A query parameter

Synopsis

Declared in <boost/url/param.hpp>
struct param;


Member Functions

Name Description
param [constructor]Constructors
operator= Assignment
operator-> Arrow support

Data Members

Name Description
has_value True if a value is present
key The key
value The value

Description

Objects of this type represent a single key and value pair in a query string where a key is always present and may be empty, while the presence of a value is indicated by has_value equal to true. An empty value is distinct from no value.

Depending on where the object was obtained, the strings may or may not contain percent escapes.

For most usages, key comparisons are case-sensitive and duplicate keys in a query are possible. However, it is the authority that has final control over how the query is interpreted.

BNF

query-params = query-param *( "&" query-param ) query-param = key [ "=" value ] key = *qpchar value = *( qpchar / "=" )

Specification

See Also

param_view, param_pct_view.

Constructors

Synopses

Declared in <boost/url/param.hpp>
Constructor
constexpr
param() = default;


» more... Constructor
constexpr
param(param const& other) = default;


» more... Constructor
param(param&& other) noexcept;


» more... Constructor
template<class OptionalString>
param(
    core::string_view key,
    OptionalString const& value);


» more... Aggregate construction
param(
    core::string_view key,
    core::string_view value,
    bool has_value) noexcept;


» more...

Return Value

A reference to this object.

Template Parameters

Name Description
OptionalString An optional string type, such as core::string_view, std::nullptr, no_value_t, or optional<core::string_view>.

Parameters

Name Description
other The object to construct from.
key The key to set.
value The value to set.
has_value True if a value is present.
Constructor

Synopsis

Declared in <boost/url/param.hpp>
constexpr
param() = default;


Description

Default constructed query parameters have an empty key and no value.

Example

param qp;

Postconditions

this->key == "" && this->value == "" && this->has_value == false

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/param.hpp>
constexpr
param(param const& other) = default;


Description

Upon construction, this becomes a copy of other.

Postconditions

this->key == other.key && this->value == other.value && this->has_value == other.has_value

Complexity

Linear in other.key.size() + other.value.size().

Exception Safety

Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The object to construct from.
Constructor

Synopsis

Declared in <boost/url/param.hpp>
param(param&& other) noexcept;


Description

Upon construction, this acquires ownership of the members of other via move construction. The moved from object is as if default constructed.

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The object to construct from.
Constructor

Synopsis

Declared in <boost/url/param.hpp>
template<class OptionalString>
param(
    core::string_view key,
    OptionalString const& value);


Description

This constructs a parameter with a key and value.

No validation is performed on the strings. Ownership of the key and value is acquired by making copies.

Example

param qp( "key", "value" ); param qp( "key", optional("value") ); param qp( "key", boost::none ); param qp( "key", nullptr ); param qp( "key", no_value );

Postconditions

this->key == key && this->value == value && this->has_value == true

Complexity

Linear in key.size() + value.size().

Exception Safety

Calls to allocate may throw.

Template Parameters

Name Description
OptionalString An optional string type, such as core::string_view, std::nullptr, no_value_t, or optional<core::string_view>.

Parameters

Name Description
key The key to set.
value The value to set.
Aggregate construction

Synopsis

Declared in <boost/url/param.hpp>
param(
    core::string_view key,
    core::string_view value,
    bool has_value) noexcept;


Parameters

Name Description
key The key to set.
value The value to set.
has_value True if a value is present.
Assignment

Synopses

Declared in <boost/url/param.hpp>
Assignment
constexpr
param&
operator=(param const& other) = default;


» more... Assignment
param&
operator=(param&& other) noexcept;


» more... Assignment
param&
operator=(param_pct_view const& other);


» more... Assignment
param&
operator=(param_view const& other);


» more...

Return Value

A reference to this object.

Parameters

Name Description
other The object to assign from.
Assignment

Synopsis

Declared in <boost/url/param.hpp>
constexpr
param&
operator=(param const& other) = default;


Description

Upon assignment, this becomes a copy of other.

Postconditions

this->key == other.key && this->value == other.value && this->has_value == other.has_value

Complexity

Linear in other.key.size() + other.value.size().

Exception Safety

Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The object to assign from.
Assignment

Synopsis

Declared in <boost/url/param.hpp>
param&
operator=(param&& other) noexcept;


Description

Upon assignment, this acquires ownership of the members of other via move assignment. The moved from object is as if default constructed.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A reference to this object.

Parameters

Name Description
other The object to assign from.
Assignment

Synopsis

Declared in <boost/url/param.hpp>
param&
operator=(param_pct_view const& other);


Description

The members of other are copied, re-using already existing string capacity.

Postconditions

this->key == other.key && this->value == other.value && this->has_value == other.has_value

Complexity

Linear in other.key.size() + other.value.size().

Exception Safety

Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The parameter to copy.
Assignment

Synopsis

Declared in <boost/url/param.hpp>
param&
operator=(param_view const& other);


Description

The members of other are copied, re-using already existing string capacity.

Postconditions

this->key == other.key && this->value == other.value && this->has_value == other.has_value

Complexity

Linear in other.key.size() + other.value.size().

Exception Safety

Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The parameter to copy.
Arrow support

Synopsis

Declared in <boost/url/param.hpp>
param const*
operator->() const noexcept;


Description

This operator returns the address of the object so that it can be used in pointer contexts.

Return Value

A pointer to the object.
True if a value is present

Synopsis

Declared in <boost/url/param.hpp>
bool has_value = false;


Description

The presence of a value is indicated by has_value == true. An empty value is distinct from no value.

The key

Synopsis

Declared in <boost/url/param.hpp>
std::string key;


Description

For most usages, key comparisons are case-sensitive and duplicate keys in a query are possible. However, it is the authority that has final control over how the query is interpreted.

The value

Synopsis

Declared in <boost/url/param.hpp>
std::string value;


Description

The presence of a value is indicated by has_value equal to true. An empty value is distinct from no value.

A view of a percent-encoded query parameter

Synopsis

Declared in <boost/url/param.hpp>
struct param_pct_view;


Member Functions

Name Description
param_pct_view [constructor]Constructors
operator-> Arrow support
operator param Conversion
operator param_view Conversion to param_view

Data Members

Name Description
has_value True if a value is present
key The key
value The value

Description

Objects of this type represent a single key and value pair in a query string where a key is always present and may be empty, while the presence of a value is indicated by has_value equal to true. An empty value is distinct from no value.

The strings may have percent escapes, and offer an additional invariant: they never contain an invalid percent-encoding.

For most usages, key comparisons are case-sensitive and duplicate keys in a query are possible. However, it is the authority that has final control over how the query is interpreted.

Keys and values in this object reference external character buffers. Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

BNF

query-params = query-param *( "&" query-param ) query-param = key [ "=" value ] key = *qpchar value = *( qpchar / "=" )

Specification

See Also

param, param_view.

Constructors

Synopses

Declared in <boost/url/param.hpp>
Constructor
constexpr
param_pct_view() = default;


» more... Construction
explicit
param_pct_view(param_view const& p);


» more... Constructor
param_pct_view(
    pct_string_view key,
    pct_string_view value) noexcept;


» more... Constructor
template<class OptionalString>
param_pct_view(
    pct_string_view key,
    OptionalString const& value);


» more... Aggregate construction
param_pct_view(
    pct_string_view key,
    pct_string_view value,
    bool has_value) noexcept;


» more...

Exceptions

Name Thrown on
system_error key or value contains an invalid percent escape.

Return Value

A param object

Template Parameters

Name Description
OptionalString An optional core::string_view type, such as boost::optional<core::string_view> or std::optional<core::string_view>.

Parameters

Name Description
p The param to construct from.
key The key to set.
value The value to set.
has_value True if a value is present
Constructor

Synopsis

Declared in <boost/url/param.hpp>
constexpr
param_pct_view() = default;


Description

Default constructed query parameters have an empty key and no value.

Example

param_pct_view qp;

Postconditions

this->key == "" && this->value == "" && this->has_value == false

Complexity

Constant.

Exception Safety

Throws nothing.

Construction

Synopsis

Declared in <boost/url/param.hpp>
explicit
param_pct_view(param_view const& p);


Description

This converts a param which may contain unvalidated percent-escapes into a param whose key and value are guaranteed to contain strings with no invalid percent-escapes, otherwise an exception is thrown.

The new key and value reference the same corresponding underlying character buffers. Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

Example

param_pct_view qp( param_view( "key", "value" ) );

Complexity

Linear in key.size() + value.size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key or value contains an invalid percent escape.

Parameters

Name Description
p The param to construct from.
Constructor

Synopsis

Declared in <boost/url/param.hpp>
param_pct_view(
    pct_string_view key,
    pct_string_view value) noexcept;


Description

This constructs a parameter with a key and value, which may both contain percent escapes. The new key and value reference the same corresponding underlying character buffers. Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

Example

param_pct_view qp( "key", "value" );

Postconditions

this->key.data() == key.data() && this->value.data() == value.data() && this->has_value == true

Complexity

Linear in key.size() + value.size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key or value contains an invalid percent-encoding.

Parameters

Name Description
key The key to set.
value The value to set.
Constructor

Synopsis

Declared in <boost/url/param.hpp>
template<class OptionalString>
param_pct_view(
    pct_string_view key,
    OptionalString const& value);


Description

This constructs a parameter with a key and optional value, which may both contain percent escapes.

The new key and value reference the same corresponding underlying character buffers.

Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

Example

param_pct_view qp( "key", optional("value") );

Postconditions

this->key.data() == key.data() && this->value->data() == value->data() && this->has_value == true

Complexity

Linear in key.size() + value->size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key or value contains an invalid percent-encoding.

Return Value

A param object

Template Parameters

Name Description
OptionalString An optional core::string_view type, such as boost::optional<core::string_view> or std::optional<core::string_view>.

Parameters

Name Description
key The key to set.
value The optional value to set.
Aggregate construction

Synopsis

Declared in <boost/url/param.hpp>
param_pct_view(
    pct_string_view key,
    pct_string_view value,
    bool has_value) noexcept;


Parameters

Name Description
key The key
value The value
has_value True if a value is present
Arrow support

Synopsis

Declared in <boost/url/param.hpp>
param_pct_view const*
operator->() const noexcept;


Description

This operator returns the address of the object so that it can be used in pointer contexts.

Return Value

A pointer to this object
Conversion

Synopsis

Declared in <boost/url/param.hpp>
explicit
operator param() const;


Description

This function performs a conversion from a reference-like query parameter to one retaining ownership of the strings by making a copy.

Complexity

Linear in this->key.size() + this->value.size().

Exception Safety

Calls to allocate may throw.

Return Value

A param object
Conversion to param_view

Synopsis

Declared in <boost/url/param.hpp>
operator param_view() const noexcept;


Description

This function performs a conversion from a pct_string_view query parameter to one using a simple string_view.

Exception Safety

Calls to allocate may throw.

Return Value

A param_view object
True if a value is present

Synopsis

Declared in <boost/url/param.hpp>
bool has_value = false;


Description

The presence of a value is indicated by has_value == true. An empty value is distinct from no value.

The key

Synopsis

Declared in <boost/url/param.hpp>
pct_string_view key;


Description

For most usages, key comparisons are case-sensitive and duplicate keys in a query are possible. However, it is the authority that has final control over how the query is interpreted.

The value

Synopsis

Declared in <boost/url/param.hpp>
pct_string_view value;


Description

The presence of a value is indicated by has_value equal to true. An empty value is distinct from no value.

A view of a query parameter

Synopsis

Declared in <boost/url/param.hpp>
struct param_view;


Member Functions

Name Description
param_view [constructor]Constructors
operator-> Arrow support
operator param Conversion

Data Members

Name Description
has_value True if a value is present
key The key
value The value

Description

Objects of this type represent a single key and value pair in a query string where a key is always present and may be empty, while the presence of a value is indicated by has_value equal to true. An empty value is distinct from no value.

Depending on where the object was obtained, the strings may or may not contain percent escapes. Some functions and objects might expect encoded strings in this view, while others expect decoded strings. The caller should be aware of the context in which the object will be used.

For most usages, key comparisons are case-sensitive and duplicate keys in a query are possible. However, it is the authority that has final control over how the query is interpreted.

Keys and values in this object reference external character buffers. Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

BNF

query-params = query-param *( "&" query-param ) query-param = key [ "=" value ] key = *qpchar value = *( qpchar / "=" )

Specification

See Also

param, param_pct_view.

Constructors

Synopses

Declared in <boost/url/param.hpp>
Constructor
constexpr
param_view() = default;


» more... Constructor
param_view(param const& other) noexcept;


» more... Constructor
template<class OptionalString>
param_view(
    core::string_view key,
    OptionalString const& value) noexcept;


» more... Aggregate construction
param_view(
    core::string_view key_,
    core::string_view value_,
    bool has_value_) noexcept;


» more...

Template Parameters

Name Description
OptionalString An optional string type, such as core::string_view, std::nullptr, no_value_t, or optional<core::string_view>.

Parameters

Name Description
other The param to reference
key The key to set.
value The value to set.
key_ The key to set.
value_ The value to set.
has_value_ True if a value is present.
Constructor

Synopsis

Declared in <boost/url/param.hpp>
constexpr
param_view() = default;


Description

Default constructed query parameters have an empty key and no value.

Example

param_view qp;

Postconditions

this->key == "" && this->value == "" && this->has_value == false

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/param.hpp>
param_view(param const& other) noexcept;


Description

This function constructs a param which references the character buffers representing the key and value in another container. Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

Example

param qp( "key", "value" ); param_view qpv( qp );

Postconditions

this->key == key && this->value == value && this->has_value == other.has_value

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The param to reference
Constructor

Synopsis

Declared in <boost/url/param.hpp>
template<class OptionalString>
param_view(
    core::string_view key,
    OptionalString const& value) noexcept;


Description

This constructs a parameter with a key and value. No validation is performed on the strings. The new key and value reference the same corresponding underlying character buffers. Ownership of the buffers is not transferred; the caller is responsible for ensuring that the assigned buffers remain valid until they are no longer referenced.

Example

param_view qp( "key", "value" );

Postconditions

this->key.data() == key.data() && this->value.data() == value.data() && this->has_value == true

Complexity

Constant.

Exception Safety

Throws nothing.

Template Parameters

Name Description
OptionalString An optional string type, such as core::string_view, std::nullptr, no_value_t, or optional<core::string_view>.

Parameters

Name Description
key The key to set.
value The value to set.
Aggregate construction

Synopsis

Declared in <boost/url/param.hpp>
param_view(
    core::string_view key_,
    core::string_view value_,
    bool has_value_) noexcept;


Parameters

Name Description
key_ The key to set.
value_ The value to set.
has_value_ True if a value is present.
Arrow support

Synopsis

Declared in <boost/url/param.hpp>
param_view const*
operator->() const noexcept;


Description

This operator returns the address of the object so that it can be used in pointer contexts.

Return Value

A pointer to the object.
Conversion

Synopsis

Declared in <boost/url/param.hpp>
explicit
operator param();


Description

This function performs a conversion from a reference-like query parameter to one retaining ownership of the strings by making a copy. No validation is performed on the strings.

Complexity

Linear in this->key.size() + this->value.size().

Exception Safety

Calls to allocate may throw.

Return Value

A new query parameter.
True if a value is present

Synopsis

Declared in <boost/url/param.hpp>
bool has_value = false;


Description

The presence of a value is indicated by has_value == true. An empty value is distinct from no value.

The key

Synopsis

Declared in <boost/url/param.hpp>
core::string_view key;


Description

For most usages, key comparisons are case-sensitive and duplicate keys in a query are possible. However, it is the authority that has final control over how the query is interpreted.

The value

Synopsis

Declared in <boost/url/param.hpp>
core::string_view value;


Description

The presence of a value is indicated by has_value equal to true. An empty value is distinct from no value.

Common functionality for query parameter containers

Synopsis

Declared in <boost/url/params_base.hpp>
class params_base;


Types

Name Description
iterator A Bidirectional iterator to a query parameter
const_iterator A Bidirectional iterator to a query parameter
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type to represent sizes.
value_type The value type

Member Functions

Name Description
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
contains Return true if a matching key exists
count Return the number of matching keys
empty Return true if there are no params
end Return an iterator to the end
find Find a matching key
find_last Find a matching key
size Return the number of params

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
params_view A view representing query parameters in a URL
params_ref A view representing query parameters in a URL
url_view_base Common functionality for containers

Derived Classes

Name Description
params_ref A view representing query parameters in a URL
params_view A view representing query parameters in a URL

Description

The library uses this base class to provide common member functions for containers of query parameters.

This class should not be instantiated directly; Instead, use one of the containers or functions:

Containers

  • params_ref
  • params_view
  • params_encoded_ref
  • params_encoded_view
A Bidirectional iterator to a query parameter

Synopsis

Declared in <boost/url/params_base.hpp>
using const_iterator = iterator;


Description

Objects of this type allow iteration through the parameters in the query. Any percent-escapes in returned strings are decoded first. The values returned are read-only; changes to parameters must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced belong to the iterator and become invalidated when that particular iterator is incremented, decremented, or destroyed.

The implementation may use temporary, recycled storage to store decoded strings. These iterators are meant to be used ephemerally. That is, for short durations such as within a function scope. Do not store iterators with static storage duration or as long-lived objects.

The reference type

Synopsis

Declared in <boost/url/params_base.hpp>
using const_reference = param;


Description

This is the type of value returned when iterators of the view are dereferenced.

See Also

param_view.

A signed integer type used to represent differences.

Synopsis

Declared in <boost/url/params_base.hpp>
using difference_type = std::ptrdiff_t;


The reference type

Synopsis

Declared in <boost/url/params_base.hpp>
using reference = param;


Description

This is the type of value returned when iterators of the view are dereferenced.

See Also

param_view.

An unsigned integer type to represent sizes.

Synopsis

Declared in <boost/url/params_base.hpp>
using size_type = std::size_t;


The value type

Synopsis

Declared in <boost/url/params_base.hpp>
using value_type = param;


Description

Values of this type represent parameters whose strings retain unique ownership by making a copy.

Example

params_view::value_type qp( *url_view( "?first=John&last=Doe" ).params().find( "first" ) );

See Also

param.

A Bidirectional iterator to a query parameter

Synopsis

Declared in <boost/url/impl/params_base.hpp>
class iterator { /* see-below */ };


Friends

|===
Name Description
params_ref A view representing query parameters in a URL
params_base Common functionality for query parameter containers

Description

Objects of this type allow iteration through the parameters in the query. Any percent-escapes in returned strings are decoded first. The values returned are read-only; changes to parameters must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced belong to the iterator and become invalidated when that particular iterator is incremented, decremented, or destroyed.

The implementation may use temporary, recycled storage to store decoded strings. These iterators are meant to be used ephemerally. That is, for short durations such as within a function scope. Do not store iterators with static storage duration or as long-lived objects.

Return an iterator to the beginning

Synopsis

Declared in <boost/url/params_base.hpp>
iterator
begin() const noexcept;


Description

Complexity

Linear in the size of the first param.

Exception Safety

Throws nothing.

Return Value

An iterator to the beginning.
Return the referenced character buffer.

Synopsis

Declared in <boost/url/params_base.hpp>
pct_string_view
buffer() const noexcept;


Description

This function returns the character buffer referenced by the view. The returned string may contain percent escapes.

Example

assert( url_view( "?first=John&last=Doe" ).params().buffer() == "?first=John&last=Doe" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The buffer.
Return true if a matching key exists

Synopsis

Declared in <boost/url/params_base.hpp>
bool
contains(
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key. The comparison is performed as if all escaped characters were decoded first.

Example

assert( url_view( "?first=John&last=Doe" ).params().contains( "first" ) );

Complexity

Linear in this->buffer().size().

Exception Safety

Throws nothing.

Return Value

true if a matching key exists.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Return the number of matching keys

Synopsis

Declared in <boost/url/params_base.hpp>
std::size_t
count(
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find the number of matches for the specified key. The comparison is performed as if all escaped characters were decoded first.

Example

assert( url_view( "?first=John&last=Doe" ).params().count( "first" ) == 1 );

Complexity

Linear in this->buffer().size().

Exception Safety

Throws nothing.

Return Value

The number of matching keys.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Return true if there are no params

Synopsis

Declared in <boost/url/params_base.hpp>
bool
empty() const noexcept;


Description

Example

assert( ! url_view( "?key=value" ).params().empty() );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if there are no params.
Return an iterator to the end

Synopsis

Declared in <boost/url/params_base.hpp>
iterator
end() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

An iterator to the end.
Find a matching key

Synopses

Declared in <boost/url/params_base.hpp>
Find a matching key
iterator
find(
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


» more... Find a matching key
iterator
find(
    iterator from,
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


» more...

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
from The position to begin the search from. This can be end().
Find a matching key

Synopsis

Declared in <boost/url/params_base.hpp>
iterator
find(
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key. The comparison is performed as if all escaped characters were decoded first.

The search starts from the first param and proceeds forward until either the key is found or the end of the range is reached, in which case end() is returned.

Example

assert( (*url_view( "?first=John&last=Doe" ).params().find( "First", ignore_case )).value == "John" );

Effects

return this->find( this->begin(), key, ic );

Complexity

Linear in this->buffer().size().

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Find a matching key

Synopsis

Declared in <boost/url/params_base.hpp>
iterator
find(
    iterator from,
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key. The comparison is performed as if all escaped characters were decoded first.

The search starts at from and proceeds forward until either the key is found or the end of the range is reached, in which case end() is returned.

Example

url_view u( "?First=John&Last=Doe" ); assert( u.params().find( "first" ) != u.params().find( "first", ignore_case ) );

Complexity

Linear in this->buffer().size().

Return Value

an iterator to the param

Parameters

Name Description
from The position to begin the search from. This can be end().
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Find a matching key

Synopses

Declared in <boost/url/params_base.hpp>
Find a matching key
iterator
find_last(
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


» more... Find a matching key
iterator
find_last(
    iterator before,
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


» more...

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
before One past the position to begin the search from. This can be end().
Find a matching key

Synopsis

Declared in <boost/url/params_base.hpp>
iterator
find_last(
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key. The comparison is performed as if all escaped characters were decoded first.

The search starts from the last param and proceeds backwards until either the key is found or the beginning of the range is reached, in which case end() is returned.

Example

assert( (*url_view( "?first=John&last=Doe" ).params().find_last( "last" )).value == "Doe" );

Complexity

Linear in this->buffer().size().

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Find a matching key

Synopsis

Declared in <boost/url/params_base.hpp>
iterator
find_last(
    iterator before,
    core::string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key. The comparison is performed as if all escaped characters were decoded first.

The search starts prior to before and proceeds backwards until either the key is found or the beginning of the range is reached, in which case end() is returned.

Example

url_view u( "?First=John&Last=Doe" ); assert( u.params().find_last( "last" ) != u.params().find_last( "last", ignore_case ) );

Complexity

Linear in this->buffer().size().

Return Value

an iterator to the param

Parameters

Name Description
before One past the position to begin the search from. This can be end().
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Return the number of params

Synopsis

Declared in <boost/url/params_base.hpp>
std::size_t
size() const noexcept;


Description

Example

assert( url_view( "?key=value").params().size() == 1 );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of params.
Return the maximum number of characters possible

Synopsis

Declared in <boost/url/params_base.hpp>
constexpr
static
std::size_t
max_size() noexcept;


Description

This represents the largest number of characters that are possible in a path, not including any null terminator.

Exception Safety

Throws nothing.

Return Value

The maximum number of characters possible.
Common functionality for containers

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
class params_encoded_base;


Types

Name Description
iterator A Bidirectional iterator to a query parameter
const_iterator A Bidirectional iterator to a query parameter
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type to represent sizes.
value_type The value type

Member Functions

Name Description
begin Return an iterator to the beginning
buffer Return the query corresponding to these params
contains Return true if a matching key exists
count Return the number of matching keys
empty Return true if there are no params
end Return an iterator to the end
find Find a matching key
find_last Find a matching key
size Return the number of params

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
params_encoded_view A view representing query parameters in a URL
params_encoded_ref A view representing query parameters in a URL
url_view_base Common functionality for containers

Derived Classes

Name Description
params_encoded_ref A view representing query parameters in a URL
params_encoded_view A view representing query parameters in a URL

Description

This base class is used by the library to provide common member functions for containers. This cannot be instantiated directly; Instead, use one of the containers or functions:

Containers

  • params_ref
  • params_view
  • params_encoded_ref
  • params_encoded_view
A Bidirectional iterator to a query parameter

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
using const_iterator = iterator;


Description

Objects of this type allow iteration through the parameters in the query. Strings returned by iterators may contain percent escapes. The values returned are read-only; changes to parameters must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced refer to the underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced by any container or iterator.

The reference type

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
using const_reference = param_pct_view;


Description

This is the type of value returned when iterators of the view are dereferenced.

See Also

param_view.

A signed integer type used to represent differences.

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
using difference_type = std::ptrdiff_t;


The reference type

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
using reference = param_pct_view;


Description

This is the type of value returned when iterators of the view are dereferenced.

See Also

param_view.

An unsigned integer type to represent sizes.

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
using size_type = std::size_t;


The value type

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
using value_type = param;


Description

Values of this type represent parameters whose strings retain unique ownership by making a copy.

Example

params_encoded_view::value_type qp( *url_view( "?first=John&last=Doe" ).params().find( "first" ) );

See Also

param.

A Bidirectional iterator to a query parameter

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
class iterator { /* see-below */ };


Friends

|===
Name Description
operator!=
operator==
params_encoded_ref A view representing query parameters in a URL
params_encoded_base Common functionality for containers

Description

Objects of this type allow iteration through the parameters in the query. Strings returned by iterators may contain percent escapes. The values returned are read-only; changes to parameters must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced refer to the underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced by any container or iterator.

Return an iterator to the beginning

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
iterator
begin() const noexcept;


Description

Complexity

Linear in the size of the first param.

Exception Safety

Throws nothing.

Return Value

An iterator to the beginning.
Return the query corresponding to these params

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
pct_string_view
buffer() const noexcept;


Description

This function returns the query string referenced by the container. The returned string may contain percent escapes.

Example

assert( url_view( "?first=John&last=Doe" ).encoded_params().buffer() == "first=John&last=Doe" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query-params = query-param *( "&" query-param ) query-param = key [ "=" value ] key = *qpchar value = *( qpchar / "=" )

Specification

Return Value

The query string.
Return true if a matching key exists

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
bool
contains(
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key, which may contain percent escapes. The comparison is performed as if all escaped characters were decoded first.

Example

assert( url_view( "?first=John&last=Doe" ).encoded_params().contains( "first" ) );

Complexity

Linear in this->buffer().size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

true if a matching key exists.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Return the number of matching keys

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
std::size_t
count(
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find the number of matches for the specified key, which may contain percent escapes. The comparison is performed as if all escaped characters were decoded first.

Example

assert( url_view( "?first=John&last=Doe" ).encoded_params().count( "first" ) == 1 );

Complexity

Linear in this->buffer().size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

The number of matching keys.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Return true if there are no params

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
bool
empty() const noexcept;


Description

Example

assert( ! url_view( "?key=value" ).encoded_params().empty() );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if there are no params.
Return an iterator to the end

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
iterator
end() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

An iterator to the end.
Find a matching key

Synopses

Declared in <boost/url/params_encoded_base.hpp>
Find a matching key
iterator
find(
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


» more... Find a matching key
iterator
find(
    iterator from,
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


» more...

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
from The position to begin the search from. This can be end().
Find a matching key

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
iterator
find(
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key, which may contain percent escapes. The comparison is performed as if all escaped characters were decoded first.

The search starts from the first param and proceeds forward until either the key is found or the end of the range is reached, in which case end() is returned.

Example

assert( url_view( "?first=John&last=Doe" ).encoded_params().find( "First", ignore_case )->value == "John" );

Effects

return this->find( this->begin(), key, ic );

Complexity

Linear in this->buffer().size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Find a matching key

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
iterator
find(
    iterator from,
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key, which may contain percent escapes. The comparison is performed as if all escaped characters were decoded first.

The search starts at from and proceeds forward until either the key is found or the end of the range is reached, in which case end() is returned.

Example

url_view u( "?First=John&Last=Doe" ); assert( u.encoded_params().find( "first" ) != u.encoded_params().find( "first", ignore_case ) );

Complexity

Linear in this->buffer().size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

an iterator to the param

Parameters

Name Description
from The position to begin the search from. This can be end().
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Find a matching key

Synopses

Declared in <boost/url/params_encoded_base.hpp>
Find a matching key
iterator
find_last(
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


» more... Find a matching key
iterator
find_last(
    iterator before,
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


» more...

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
before One past the position to begin the search from. This can be end().
Find a matching key

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
iterator
find_last(
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key, which may contain percent escapes. The comparison is performed as if all escaped characters were decoded first.

The search starts from the last param and proceeds backwards until either the key is found or the beginning of the range is reached, in which case end() is returned.

Example

assert( url_view( "?first=John&last=Doe" ).encoded_params().find_last( "last" )->value == "Doe" );

Complexity

Linear in this->buffer().size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

an iterator to the param

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Find a matching key

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
iterator
find_last(
    iterator before,
    pct_string_view key,
    ignore_case_param ic = {}) const noexcept;


Description

This function examines the parameters in the container to find a match for the specified key, which may contain percent escapes. The comparison is performed as if all escaped characters were decoded first.

The search starts prior to before and proceeds backwards until either the key is found or the beginning of the range is reached, in which case end() is returned.

Example

url_view u( "?First=John&Last=Doe" ); assert( u.encoded_params().find_last( "last" ) != u.encoded_params().find_last( "last", ignore_case ) );

Complexity

Linear in this->buffer().size().

Return Value

an iterator to the param

Parameters

Name Description
before One past the position to begin the search from. This can be end().
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Return the number of params

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
std::size_t
size() const noexcept;


Description

Example

assert( url_view( "?key=value").encoded_params().size() == 1 );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of params.
Return the maximum number of characters possible

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
constexpr
static
std::size_t
max_size() noexcept;


Description

This represents the largest number of characters that are possible in a path, not including any null terminator.

Exception Safety

Throws nothing.

Return Value

The maximum number of characters possible.
A view representing query parameters in a URL

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
class params_encoded_ref
    : public params_encoded_base


Base Classes

Name Description
params_encoded_baseCommon functionality for containers

Types

Name Description
iterator A Bidirectional iterator to a query parameter
const_iterator A Bidirectional iterator to a query parameter
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type to represent sizes.
value_type The value type

Member Functions

Name Description
params_encoded_ref [constructor]Constructor
operator= Assignment
append Append params
assign Assign params
begin Return an iterator to the beginning
buffer Return the query corresponding to these params
clear Clear the contents of the container
contains Return true if a matching key exists
count Return the number of matching keys
empty Return true if there are no params
end Return an iterator to the end
erase Erase params
find Find a matching key
find_last Find a matching key
insert Insert params
replace Replace params
set Set a value
size Return the number of params
unset Remove the value on an element
url Return the referenced url
operator params_encoded_view Conversion

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
url_base Common functionality for containers

Description

Objects of this type are used to interpret the query parameters as a bidirectional view of key value pairs.

The view does not retain ownership of the elements and instead references the original url. The caller is responsible for ensuring that the lifetime of the referenced url extends until it is no longer referenced.

The view is modifiable; calling non-const members causes changes to the referenced url.

Example

url u( "?first=John&last=Doe" ); params_encoded_ref p = u.encoded_params();

Strings produced when elements are returned have type param_pct_view and represent encoded strings. Strings passed to member functions may contain percent escapes, and throw exceptions on invalid inputs.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it. Modifications made through the container invalidate some iterators to the underlying character buffer:

  • append : Only end().
  • assign, clear, operator= : All params.
  • erase : Erased params and all params after (including end()).
  • insert : All params at or after the insertion point (including end()).
  • replace, set : Modified params and all params after (including end()).
Constructor

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
constexpr
params_encoded_ref(params_encoded_ref const& other) = default;


Description

After construction, both views reference the same url. Ownership is not transferred; the caller is responsible for ensuring the lifetime of the url extends until it is no longer referenced.

Postconditions

&this->url() == &other.url();

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
Assignment

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Assignment
params_encoded_ref&
operator=(params_encoded_ref const& other);


» more... Assignment
params_encoded_ref&
operator=(std::initializer_list<param_pct_view> init);


» more...

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
other The params to assign.
init The list of params to assign.
Assignment

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
params_encoded_ref&
operator=(params_encoded_ref const& other);


Description

The previous contents of this are replaced by the contents of other.

All iterators are invalidated.

NOTE

The strings referenced by other must not come from the underlying url, or else the behavior is undefined.

Effects

this->assign( other.begin(), other.end() );

Complexity

Linear in other.buffer().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

*this

Parameters

Name Description
other The params to assign.
Assignment

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
params_encoded_ref&
operator=(std::initializer_list<param_pct_view> init);


Description

After assignment, the previous contents of the query parameters are replaced by the contents of the initializer-list.

All iterators are invalidated.

Preconditions

None of character buffers referenced by init may overlap the character buffer of the underlying url, or else the behavior is undefined.

Effects

this->assign( init.begin(), init.end() );

Complexity

Linear in init.size().

Exception Safety

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

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
init The list of params to assign.
Append params

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Append params
iterator
append(std::initializer_list<param_pct_view> init);


» more... Append params
iterator
append(param_pct_view const& p);


» more... Append params
template<class FwdIt>
iterator
append(
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

  • An iterator to the first new element.
  • An iterator to the new element.

Parameters

Name Description
init The list of params to append.
p The param to append.
first The first element to append.
last One past the last element to append.
Append params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
append(std::initializer_list<param_pct_view> init);


Description

This function appends the params in an initializer-list to the view.

The end() iterator is invalidated.

Example

url u; u.encoded_params().append({ {"first", "John"}, {"last", "Doe"} });

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

An iterator to the first new element.

Parameters

Name Description
init The list of params to append.
Append params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
append(param_pct_view const& p);


Description

This function appends a param to the view.

The end() iterator is invalidated.

Example

url u; u.encoded_params().append( { "first", "John" } );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error p contains an invalid percent-encoding.

Return Value

An iterator to the new element.

Parameters

Name Description
p The param to append.
Append params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
template<class FwdIt>
iterator
append(
    FwdIt first,
    FwdIt last);


Description

This function appends a range of params to the view.

The end() iterator is invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Return Value

  • An iterator to the first new element.
  • An iterator to the first new element.

Parameters

Name Description
first The first element to append.
last One past the last element to append.
Assign params

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Assign params
void
assign(std::initializer_list<param_pct_view> init);


» more... Assign params
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Parameters

Name Description
init The list of params to assign.
first The first element to assign.
last One past the last element to assign.
Assign params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
void
assign(std::initializer_list<param_pct_view> init);


Description

This function replaces the entire contents of the view with the params in the initializer-list.

All iterators are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Example

url u; u.encoded_params().assign({ { "first", "John" }, { "last", "Doe" } });

Complexity

Linear in init.size().

Exception Safety

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

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Parameters

Name Description
init The list of params to assign.
Assign params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


Description

This function replaces the entire contents of the view with the params in the range.

All iterators are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true

Complexity

Linear in the size of the range.

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Parameters

Name Description
first The first element to assign.
last One past the last element to assign.
Clear the contents of the container

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
void
clear() noexcept;


Description

All iterators are invalidated.

Effects

this->url().remove_query();

Postconditions

this->empty() == true && this->url().has_query() == false

Complexity

Constant.

Exception Safety

Throws nothing.

Erase params

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Erase params
iterator
erase(iterator pos) noexcept;


» more... Erase params
iterator
erase(
    iterator first,
    iterator last) noexcept;


» more... Erase params
std::size_t
erase(
    pct_string_view key,
    ignore_case_param ic = {}) noexcept;


» more...

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

  • An iterator to one past the removed element.
  • An iterator to one past the removed range.
  • An iterator to one past the removed range.
  • The number of params removed from the container.

Parameters

Name Description
pos An iterator to the element.
first The first element to remove.
last One past the last element to remove.
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Erase params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
erase(iterator pos) noexcept;


Description

This function removes an element from the container.

All iterators that are equal to pos or come after are invalidated.

Example

url u( "?first=John&last=Doe" ); params_encoded_ref::iterator it = u.encoded_params().erase( u.encoded_params().begin() ); assert( u.encoded_query() == "last=Doe" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed element.

Parameters

Name Description
pos An iterator to the element.
Erase params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
erase(
    iterator first,
    iterator last) noexcept;


Description

This function removes a range of params from the container.

All iterators that are equal to first or come after are invalidated.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

  • An iterator to one past the removed range.
  • An iterator to one past the removed range.

Parameters

Name Description
first The first element to remove.
last One past the last element to remove.
Erase params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
std::size_t
erase(
    pct_string_view key,
    ignore_case_param ic = {}) noexcept;


Description

All iterators are invalidated.

Postconditions

this->count( key, ic ) == 0

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error key contains an invalid percent-encoding.

Return Value

The number of params removed from the container.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Insert params

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Insert params
iterator
insert(
    iterator before,
    std::initializer_list<param_pct_view> init);


» more... Insert params
iterator
insert(
    iterator before,
    param_pct_view const& p);


» more... Insert params
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

  • An iterator to the first element inserted, or before if init.size() == 0.
  • An iterator to the inserted element.
  • An iterator to the first element inserted, or before if first == last.
  • An iterator to the first element inserted.

Parameters

Name Description
before An iterator before which the element is inserted. This may be equal to end().
init The list of params to insert.
p The param to insert.
first The first element to insert.
last One past the last element to insert.
Insert params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
insert(
    iterator before,
    std::initializer_list<param_pct_view> init);


Description

This function inserts the params in an initializer-list before the specified position.

All iterators that are equal to before or come after are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

An iterator to the first element inserted, or before if init.size() == 0.

Parameters

Name Description
before An iterator before which the element is inserted. This may be equal to end().
init The list of params to insert.
Insert params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
insert(
    iterator before,
    param_pct_view const& p);


Description

This function inserts a param before the specified position.

All iterators that are equal to before or come after are invalidated.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error p contains an invalid percent-encoding.

Return Value

An iterator to the inserted element.

Parameters

Name Description
before An iterator before which the param is inserted. This may be equal to end().
p The param to insert.
Insert params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


Description

This function inserts a range of params before the specified position.

All iterators that are equal to before or come after are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Return Value

  • An iterator to the first element inserted, or before if first == last.
  • An iterator to the first element inserted.

Parameters

Name Description
before An iterator before which the element is inserted. This may be equal to end().
first The first element to insert.
last One past the last element to insert.
Replace params

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Replace params
iterator
replace(
    iterator pos,
    param_pct_view const& p);


» more... Replace params
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<param_pct_view> init);


» more... Replace params
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error p contains an invalid percent-encoding.

Return Value

  • An iterator to the element.
  • An iterator to the first element inserted, or one past to if init.size() == 0.
  • An iterator to the first element inserted, or one past to if first == last.
  • An iterator to the first element inserted, or one past to if first == last.

Parameters

Name Description
pos An iterator to the element.
p The param to assign.
from,to The range of params to replace.
init The list of params to assign.
from The first element to replace.
to One past the last element to replace.
first The first element to insert.
last One past the last element to insert.
Replace params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
replace(
    iterator pos,
    param_pct_view const& p);


Description

This function replaces the contents of the element at pos with the specified param.

All iterators that are equal to pos or come after are invalidated.

NOTE

The strings passed in must not come from the element being replaced, or else the behavior is undefined.

Example

url u( "?first=John&last=Doe" ); u.encoded_params().replace( u.encoded_params().begin(), { "title", "Mr" }); assert( u.encoded_query() == "title=Mr&last=Doe" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error p contains an invalid percent-encoding.

Return Value

An iterator to the element.

Parameters

Name Description
pos An iterator to the element.
p The param to assign.
Replace params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<param_pct_view> init);


Description

This function replaces a range of params with the params in an initializer-list.

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

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error init contains an invalid percent-encoding.

Return Value

An iterator to the first element inserted, or one past to if init.size() == 0.

Parameters

Name Description
from,to The range of params to replace.
init The list of params to assign.
Replace params

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


Description

This function replaces a range of params with a range of params.

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

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Return Value

  • An iterator to the first element inserted, or one past to if first == last.
  • An iterator to the first element inserted, or one past to if first == last.

Parameters

Name Description
from The first element to replace.
to One past the last element to replace.
first The first element to insert.
last One past the last element to insert.
Set a value

Synopses

Declared in <boost/url/params_encoded_ref.hpp>
Set a value
iterator
set(
    iterator pos,
    pct_string_view value);


» more... Set a value
iterator
set(
    pct_string_view key,
    pct_string_view value,
    ignore_case_param ic = {});


» more...

Exceptions

Name Thrown on
system_error value contains an invalid percent-encoding.

Return Value

  • An iterator to the element.
  • An iterator to the appended or modified element.

Parameters

Name Description
pos An iterator to the element.
value The value to assign. The empty string still counts as a value. That is, has_value for the element is true.
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Set a value

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
set(
    iterator pos,
    pct_string_view value);


Description

This function replaces the value of an element at the specified position.

All iterators that are equal to pos or come after are invalidated.

NOTE

The string passed in must not come from the element being replaced, or else the behavior is undefined.

Example

url u( "?id=42&id=69" ); u.encoded_params().set( u.encoded_params().begin(), "none" ); assert( u.encoded_query() == "id=none&id=69" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error value contains an invalid percent-encoding.

Return Value

An iterator to the element.

Parameters

Name Description
pos An iterator to the element.
value The value to assign. The empty string still counts as a value. That is, has_value for the element is true.
Set a value

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
set(
    pct_string_view key,
    pct_string_view value,
    ignore_case_param ic = {});


Description

This function performs one of two actions depending on the value of this->contains( key, ic ).

  • If key is contained in the view then one of the matching params has its value changed to the specified value. The remaining params with a matching key are erased. Otherwise,
  • If key is not contained in the view, then the function apppends the param { key, value }.

All iterators are invalidated.

NOTE

The strings passed in must not come from the element being replaced, or else the behavior is undefined.

Example

url u( "?id=42&id=69" ); u.encoded_params().set( "id", "none" ); assert( u.encoded_params().count( "id" ) == 1 );

Postconditions

this->count( key, ic ) == 1 && this->find( key, ic )->value == value

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error key or value contain an invalid percent-encoding.

Return Value

An iterator to the appended or modified element.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
value The value to assign. The empty string still counts as a value. That is, has_value for the element is true.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Remove the value on an element

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
iterator
unset(iterator pos) noexcept;


Description

This function removes the value of an element at the specified position. After the call returns, has_value for the element is false.

All iterators that are equal to pos or come after are invalidated.

Example

url u( "?first=John&last=Doe" ); u.encoded_params().unset( u.encoded_params().begin() ); assert( u.encoded_query() == "first&last=Doe" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

An iterator to the element.

Parameters

Name Description
pos An iterator to the element.
Return the referenced url

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
url_base&
url() const noexcept;


Description

This function returns the url referenced by the view.

Example

url u( "?key=value" ); assert( &u.encoded_params().url() == &u );

Exception Safety

Throws nothing.

Return Value

A reference to the url.
Conversion

Synopsis

Declared in <boost/url/params_encoded_ref.hpp>
operator params_encoded_view() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A view of the params.
A view representing query parameters in a URL

Synopsis

Declared in <boost/url/params_encoded_view.hpp>
class params_encoded_view
    : public params_encoded_base


Base Classes

Name Description
params_encoded_baseCommon functionality for containers

Types

Name Description
iterator A Bidirectional iterator to a query parameter
const_iterator A Bidirectional iterator to a query parameter
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type to represent sizes.
value_type The value type

Member Functions

Name Description
params_encoded_view [constructor]Constructor
operator= Assignment
begin Return an iterator to the beginning
buffer Return the query corresponding to these params
contains Return true if a matching key exists
count Return the number of matching keys
empty Return true if there are no params
end Return an iterator to the end
find Find a matching key
find_last Find a matching key
size Return the number of params
operator params_view Conversion

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
parse_query Parse a string and return an encoded params view
params_encoded_ref A view representing query parameters in a URL
params_view A view representing query parameters in a URL
url_view_base Common functionality for containers

Description

Objects of this type are used to interpret the query parameters as a bidirectional view of key/value pairs.

The view does not retain ownership of the elements and instead references the original character buffer. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

url_view u( "?first=John&last=Doe" ); params_encoded_view p = u.encoded_params();

Strings produced when elements are returned have type param_pct_view and represent encoded strings. Strings passed to member functions may contain percent escapes, and throw exceptions on invalid inputs.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it.

Constructor

Synopses

Declared in <boost/url/params_encoded_view.hpp>
Constructor
constexpr
params_encoded_view() = default;


» more... Constructor
constexpr
params_encoded_view(params_encoded_view const& other) = default;


» more... Constructor
params_encoded_view(core::string_view s);


» more...

Exceptions

Name Thrown on
system_error s contains an invalid query parameter string.

Parameters

Name Description
other The object to copy
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/params_encoded_view.hpp>
constexpr
params_encoded_view() = default;


Description

Default-constructed params have zero elements.

Example

params_encoded_view qp;

Effects

return params_encoded_view( "" );

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/params_encoded_view.hpp>
constexpr
params_encoded_view(params_encoded_view const& other) = default;


Description

After construction both views reference the same character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing

Parameters

Name Description
other The object to copy
Constructor

Synopsis

Declared in <boost/url/params_encoded_view.hpp>
params_encoded_view(core::string_view s);


Description

This function constructs params from a valid query parameter string, which can contain percent escapes. Unlike the parameters in URLs, the string passed here should not start with "?". Upon construction, the view references the character buffer pointed to by s. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

params_encoded_view qp( "first=John&last=Doe" );

Effects

return parse_query( s ).value();

Postconditions

this->buffer().data() == s.data()

Complexity

Linear in s.

Exception Safety

Exceptions thrown on invalid input.

BNF

query-params = [ query-param ] *( "&" query-param ) query-param = key [ "=" value ]

Specification

Exceptions

Name Thrown on
system_error s contains an invalid query parameter string.

Parameters

Name Description
s The string to parse.
Assignment

Synopsis

Declared in <boost/url/params_encoded_view.hpp>
constexpr
params_encoded_view&
operator=(params_encoded_view const& other) = default;


Description

After assignment, both views reference the same underlying character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Return Value

*this

Parameters

Name Description
other The object to assign
Conversion

Synopsis

Declared in <boost/url/params_encoded_view.hpp>
operator params_view() const noexcept;


Description

This conversion returns a new view which references the same underlying character buffer, and whose iterators and members return ordinary strings with decoding applied to any percent escapes.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Example

params_view qp = parse_path( "/path/to/file.txt" ).value();

Postconditions

params_view( *this ).buffer().data() == this->buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Return Value

A new view with percent escapes decoded.
A view representing query parameters in a URL

Synopsis

Declared in <boost/url/params_ref.hpp>
class params_ref
    : public params_base


Base Classes

Name Description
params_baseCommon functionality for query parameter containers

Types

Name Description
iterator A Bidirectional iterator to a query parameter
const_iterator A Bidirectional iterator to a query parameter
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type to represent sizes.
value_type The value type

Member Functions

Name Description
params_ref [constructor]Constructor
operator= Assignment
append Append elements
assign Assign elements
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
clear Clear the contents of the container
contains Return true if a matching key exists
count Return the number of matching keys
empty Return true if there are no params
end Return an iterator to the end
erase Erase elements
find Find a matching key
find_last Find a matching key
insert Insert elements
replace Replace elements
set Set a value
size Return the number of params
unset Remove the value on an element
url Return the referenced url
operator params_view Conversion

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
url_base Common functionality for containers

Description

Objects of this type are used to interpret the query parameters as a bidirectional view of key/value pairs. The view does not retain ownership of the elements and instead references the original url. The caller is responsible for ensuring that the lifetime of the referenced url extends until it is no longer referenced. The view is modifiable; calling non-const members causes changes to the referenced url.

Percent escapes in strings returned when dereferencing iterators are automatically decoded. Reserved characters in strings supplied to modifier functions are automatically percent-escaped.

Example

url u( "?first=John&last=Doe" ); params_ref p = u.params();

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it. Modifications made through the container invalidate some or all iterators:

  • append : Only end().
  • assign, clear, operator= : All elements.
  • erase : Erased elements and all elements after (including end()).
  • insert : All elements at or after the insertion point (including end()).
  • replace, set : Modified elements and all elements after (including end()).
Constructor

Synopses

Declared in <boost/url/params_ref.hpp>
Constructor
constexpr
params_ref(params_ref const& other) = default;


» more... Constructor
params_ref(
    params_ref const& other,
    encoding_opts opt) noexcept;


» more...

Parameters

Name Description
other The other view.
opt The options for decoding. If this parameter is omitted, space_as_plus is used.
Constructor

Synopsis

Declared in <boost/url/params_ref.hpp>
constexpr
params_ref(params_ref const& other) = default;


Description

After construction, both views reference the same url. Ownership is not transferred; the caller is responsible for ensuring the lifetime of the url extends until it is no longer referenced.

Postconditions

&this->url() == &other.url()

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
Constructor

Synopsis

Declared in <boost/url/params_ref.hpp>
params_ref(
    params_ref const& other,
    encoding_opts opt) noexcept;


Description

After construction, both views will reference the same url but this instance will use the specified encoding_opts when the values are decoded.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the url extends until it is no longer referenced.

Postconditions

&this->url() == &other.url()

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
opt The options for decoding. If this parameter is omitted, space_as_plus is used.
Assignment

Synopses

Declared in <boost/url/params_ref.hpp>
Assignment
params_ref&
operator=(params_ref const& other);


» more... Assignment
params_ref&
operator=(std::initializer_list<param_view> init);


» more...

Return Value

*this

Parameters

Name Description
other The params to assign.
init The list of params to assign.
Assignment

Synopsis

Declared in <boost/url/params_ref.hpp>
params_ref&
operator=(params_ref const& other);


Description

The previous contents of this are replaced by the contents of other.

All iterators are invalidated.

NOTE

The strings referenced by other must not come from the underlying url, or else the behavior is undefined.

Effects

this->assign( other.begin(), other.end() );

Complexity

Linear in other.buffer().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

*this

Parameters

Name Description
other The params to assign.
Assignment

Synopsis

Declared in <boost/url/params_ref.hpp>
params_ref&
operator=(std::initializer_list<param_view> init);


Description

After assignment, the previous contents of the query parameters are replaced by the contents of the initializer-list.

Preconditions

None of character buffers referenced by init may overlap the character buffer of the underlying url, or else the behavior is undefined.

Effects

this->assign( init );

Complexity

Linear in init.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

*this

Parameters

Name Description
init The list of params to assign.
Append elements

Synopses

Declared in <boost/url/params_ref.hpp>
Append elements
iterator
append(std::initializer_list<param_view> init);


» more... Append elements
iterator
append(param_view const& p);


» more... Append elements
template<class FwdIt>
iterator
append(
    FwdIt first,
    FwdIt last);


» more...

Return Value

  • An iterator to the first new element.
  • An iterator to the new element.

Parameters

Name Description
init The list of params to append.
p The param to append.
first The first element to append.
last One past the last element to append.
Append elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
append(std::initializer_list<param_view> init);


Description

This function appends the params in an initializer-list to the view.

The end() iterator is invalidated.

Example

url u; u.params().append({ { "first", "John" }, { "last", "Doe" } });

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first new element.

Parameters

Name Description
init The list of params to append.
Append elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
append(param_view const& p);


Description

This function appends a param to the view.

The end() iterator is invalidated.

Example

url u; u.params().append( { "first", "John" } );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the new element.

Parameters

Name Description
p The param to append.
Append elements

Synopsis

Declared in <boost/url/params_ref.hpp>
template<class FwdIt>
iterator
append(
    FwdIt first,
    FwdIt last);


Description

This function appends a range of params to the view.

The end() iterator is invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_view >::value == true

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first new element.

Parameters

Name Description
first The first element to append.
last One past the last element to append.
Assign elements

Synopses

Declared in <boost/url/params_ref.hpp>
Assign elements
void
assign(std::initializer_list<param_view> init);


» more... Assign elements
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


» more...

Parameters

Name Description
init The list of params to assign.
first The first element to assign.
last One past the last element to assign.
Assign elements

Synopsis

Declared in <boost/url/params_ref.hpp>
void
assign(std::initializer_list<param_view> init);


Description

This function replaces the entire contents of the view with the params in the initializer-list.

All iterators are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Example

url u; u.params().assign( {{ "first", "John" }, { "last", "Doe" }} );

Complexity

Linear in init.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Parameters

Name Description
init The list of params to assign.
Assign elements

Synopsis

Declared in <boost/url/params_ref.hpp>
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


Description

This function replaces the entire contents of the view with the params in the range.

All iterators are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_view >::value == true

Complexity

Linear in the size of the range.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Parameters

Name Description
first The first element to assign.
last One past the last element to assign.
Clear the contents of the container

Synopsis

Declared in <boost/url/params_ref.hpp>
void
clear() noexcept;


Description

All iterators are invalidated.

Effects

this->url().remove_query();

Postconditions

this->empty() == true && this->url().has_query() == false

Complexity

Constant.

Exception Safety

Throws nothing.

Erase elements

Synopses

Declared in <boost/url/params_ref.hpp>
Erase elements
iterator
erase(iterator pos) noexcept;


» more... Erase elements
iterator
erase(
    iterator first,
    iterator last) noexcept;


» more... Erase elements
std::size_t
erase(
    core::string_view key,
    ignore_case_param ic = {}) noexcept;


» more...

Return Value

  • An iterator to one past the removed element.
  • An iterator to one past the removed range.
  • The number of elements removed from the container.

Parameters

Name Description
pos An iterator to the element.
first The first element to remove.
last One past the last element to remove.
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Erase elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
erase(iterator pos) noexcept;


Description

This function removes an element from the container.

All iterators that are equal to pos or come after are invalidated.

Example

url u( "?first=John&last=Doe" ); params_ref::iterator it = u.params().erase( u.params().begin() ); assert( u.encoded_query() == "last=Doe" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed element.

Parameters

Name Description
pos An iterator to the element.
Erase elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
erase(
    iterator first,
    iterator last) noexcept;


Description

This function removes a range of elements from the container.

All iterators that are equal to first or come after are invalidated.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed range.

Parameters

Name Description
first The first element to remove.
last One past the last element to remove.
Erase elements

Synopsis

Declared in <boost/url/params_ref.hpp>
std::size_t
erase(
    core::string_view key,
    ignore_case_param ic = {}) noexcept;


Description

All iterators are invalidated.

Postconditions

this->count( key, ic ) == 0

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

The number of elements removed from the container.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Insert elements

Synopses

Declared in <boost/url/params_ref.hpp>
Insert elements
iterator
insert(
    iterator before,
    std::initializer_list<param_view> init);


» more... Insert elements
iterator
insert(
    iterator before,
    param_view const& p);


» more... Insert elements
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


» more...

Return Value

  • An iterator to the first element inserted, or before if init.size() == 0.
  • An iterator to the inserted element.
  • An iterator to the first element inserted, or before if first == last.
  • An iterator to the first element inserted, or before if first == last.

Parameters

Name Description
before An iterator before which the element is inserted. This may be equal to end().
init The list of params to insert.
p The param to insert.
first The first element to insert.
last One past the last element to insert.
Insert elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
insert(
    iterator before,
    std::initializer_list<param_view> init);


Description

This function inserts the params in an initializer-list before the specified position.

All iterators that are equal to before or come after are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first element inserted, or before if init.size() == 0.

Parameters

Name Description
before An iterator before which the element is inserted. This may be equal to end().
init The list of params to insert.
Insert elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
insert(
    iterator before,
    param_view const& p);


Description

This function inserts a param before the specified position.

All iterators that are equal to before or come after are invalidated.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the inserted element.

Parameters

Name Description
before An iterator before which the param is inserted. This may be equal to end().
p The param to insert.
Insert elements

Synopsis

Declared in <boost/url/params_ref.hpp>
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


Description

This function inserts a range of params before the specified position.

All iterators that are equal to before or come after are invalidated.

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_view >::value == true

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

  • An iterator to the first element inserted, or before if first == last.
  • An iterator to the first element inserted, or before if first == last.

Parameters

Name Description
before An iterator before which the element is inserted. This may be equal to end().
first The first element to insert.
last One past the last element to insert.
Replace elements

Synopses

Declared in <boost/url/params_ref.hpp>
Replace elements
iterator
replace(
    iterator pos,
    param_view const& p);


» more... Replace elements
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<param_view> init);


» more... Replace elements
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


» more...

Return Value

  • An iterator to the element.
  • An iterator to the first element inserted, or one past to if init.size() == 0.
  • An iterator to the first element inserted, or one past to if first == last.
  • An iterator to the first element inserted, or one past to if first == last.

Parameters

Name Description
pos An iterator to the element.
p The param to assign.
from,to The range of elements to replace.
init The list of params to assign.
from The first element to replace.
to One past the last element to replace.
first The first element to insert.
last One past the last element to insert.
Replace elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
replace(
    iterator pos,
    param_view const& p);


Description

This function replaces the contents of the element at pos with the specified param.

All iterators that are equal to pos or come after are invalidated.

Example

url u( "?first=John&last=Doe" ); u.params().replace( u.params().begin(), { "title", "Mr" }); assert( u.encoded_query() == "title=Mr&last=Doe" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the element.

Parameters

Name Description
pos An iterator to the element.
p The param to assign.
Replace elements

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<param_view> init);


Description

This function replaces a range of elements with the params in an initializer-list.

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

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first element inserted, or one past to if init.size() == 0.

Parameters

Name Description
from,to The range of elements to replace.
init The list of params to assign.
Replace elements

Synopsis

Declared in <boost/url/params_ref.hpp>
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


Description

This function replaces a range of elements with a range of params.

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

NOTE

The strings referenced by the inputs must not come from the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_view >::value == true

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

  • An iterator to the first element inserted, or one past to if first == last.
  • An iterator to the first element inserted, or one past to if first == last.

Parameters

Name Description
from The first element to replace.
to One past the last element to replace.
first The first element to insert.
last One past the last element to insert.
Set a value

Synopses

Declared in <boost/url/params_ref.hpp>
Set a value
iterator
set(
    iterator pos,
    core::string_view value);


» more... Set a value
iterator
set(
    core::string_view key,
    core::string_view value,
    ignore_case_param ic = {});


» more...

Return Value

  • An iterator to the element.
  • An iterator to the appended or modified element.

Parameters

Name Description
pos An iterator to the element.
value The value to assign. The empty string still counts as a value. That is, has_value for the element is true.
key The key to match. By default, a case-sensitive comparison is used.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Set a value

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
set(
    iterator pos,
    core::string_view value);


Description

This function replaces the value of an element at the specified position.

All iterators that are equal to pos or come after are invalidated.

Example

url u( "?id=42&id=69" ); u.params().set( u.params().begin(), "none" ); assert( u.encoded_query() == "id=none&id=69" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the element.

Parameters

Name Description
pos An iterator to the element.
value The value to assign. The empty string still counts as a value. That is, has_value for the element is true.
Set a value

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
set(
    core::string_view key,
    core::string_view value,
    ignore_case_param ic = {});


Description

This function performs one of two actions depending on the value of this->contains( key, ic ).

  • If key is contained in the view then one of the matching elements has its value changed to the specified value. The remaining elements with a matching key are erased. Otherwise,
  • If key is not contained in the view, then the function apppends the param { key, value }.

All iterators are invalidated.

Example

url u( "?id=42&id=69" ); u.params().set( "id", "none" ); assert( u.params().count( "id" ) == 1 );

Postconditions

this->count( key, ic ) == 1 && this->find( key, ic )->value == value

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the appended or modified element.

Parameters

Name Description
key The key to match. By default, a case-sensitive comparison is used.
value The value to assign. The empty string still counts as a value. That is, has_value for the element is true.
ic An optional parameter. If the value ignore_case is passed here, the comparison is case-insensitive.
Remove the value on an element

Synopsis

Declared in <boost/url/params_ref.hpp>
iterator
unset(iterator pos) noexcept;


Description

This function removes the value of an element at the specified position. After the call returns, has_value for the element is false.

All iterators that are equal to pos or come after are invalidated.

Example

url u( "?first=John&last=Doe" ); u.params().unset( u.params().begin() ); assert( u.encoded_query() == "first&last=Doe" );

Complexity

Linear in this->url().encoded_query().size().

Exception Safety

Throws nothing.

Return Value

An iterator to the element.

Parameters

Name Description
pos An iterator to the element.
Return the referenced url

Synopsis

Declared in <boost/url/params_ref.hpp>
url_base&
url() const noexcept;


Description

This function returns the url referenced by the view.

Example

url u( "?key=value" ); assert( &u.segments().url() == &u );

Exception Safety

Throws nothing.

Return Value

A reference to the url.
Conversion

Synopsis

Declared in <boost/url/params_ref.hpp>
operator params_view() const noexcept;


Return Value

A view of the query parameters.
A view representing query parameters in a URL

Synopsis

Declared in <boost/url/params_view.hpp>
class params_view
    : public params_base


Base Classes

Name Description
params_baseCommon functionality for query parameter containers

Types

Name Description
iterator A Bidirectional iterator to a query parameter
const_iterator A Bidirectional iterator to a query parameter
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type to represent sizes.
value_type The value type

Member Functions

Name Description
params_view [constructor]Constructor
operator= Assignment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
contains Return true if a matching key exists
count Return the number of matching keys
empty Return true if there are no params
end Return an iterator to the end
find Find a matching key
find_last Find a matching key
size Return the number of params

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
params_ref A view representing query parameters in a URL
params_encoded_view A view representing query parameters in a URL
url_view_base Common functionality for containers

Description

Objects of this type are used to interpret the query parameters as a bidirectional view of key/value pairs.

The view does not retain ownership of the elements and instead references the original character buffer. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

url_view u( "?first=John&last=Doe" ); params_view p = u.params();

Percent escapes in strings returned when dereferencing iterators are automatically decoded.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it.

Constructor

Synopses

Declared in <boost/url/params_view.hpp>
Constructor
params_view() = default;


» more... Constructor
constexpr
params_view(params_view const& other) = default;


» more... Constructor
params_view(core::string_view s);


» more... Constructor
params_view(
    core::string_view s,
    encoding_opts opt);


» more... Constructor
params_view(
    params_view const& other,
    encoding_opts opt) noexcept;


» more...

Exceptions

Name Thrown on
system_error s contains an invalid query parameter string.

Parameters

Name Description
other The object to copy
s The string to parse.
opt The options for decoding. If this parameter is omitted, space_as_plus is used.
Constructor

Synopsis

Declared in <boost/url/params_view.hpp>
params_view() = default;


Description

Default-constructed params have zero elements.

Example

params_view qp;

Effects

return params_view( "" );

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/params_view.hpp>
constexpr
params_view(params_view const& other) = default;


Description

After construction both views reference the same character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing

Parameters

Name Description
other The object to copy
Constructor

Synopsis

Declared in <boost/url/params_view.hpp>
params_view(core::string_view s);


Description

This function constructs params from a valid query parameter string, which can contain percent escapes. Unlike the parameters in URLs, the string passed here should not start with "?". Upon construction, the view references the character buffer pointed to by s. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

params_view qp( "first=John&last=Doe" );

Effects

return parse_query( s ).value();

Postconditions

this->buffer().data() == s.data()

Complexity

Linear in s.

Exception Safety

Exceptions thrown on invalid input.

BNF

query-params = [ query-param ] *( "&" query-param ) query-param = key [ "=" value ]

Specification

Exceptions

Name Thrown on
system_error s contains an invalid query parameter string.

Parameters

Name Description
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/params_view.hpp>
params_view(
    core::string_view s,
    encoding_opts opt);


Description

This function constructs params from a valid query parameter string, which can contain percent escapes.

This instance will use the specified encoding_opts when the values are decoded.

Unlike the parameters in URLs, the string passed here should not start with "?". Upon construction, the view will reference the character buffer pointed to by s. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

encoding_opts opt; opt.space_as_plus = true; params_view qp( "name=John+Doe", opt );

Effects

return params_view(parse_query( s ).value(), opt);

Postconditions

this->buffer().data() == s.data()

Complexity

Linear in s.

Exception Safety

Exceptions thrown on invalid input.

BNF

query-params = [ query-param ] *( "&" query-param ) query-param = key [ "=" value ]

Specification

Exceptions

Name Thrown on
system_error s contains an invalid query parameter string.

Parameters

Name Description
s The string to parse.
opt The options for decoding. If this parameter is omitted, space_as_plus is used.
Constructor

Synopsis

Declared in <boost/url/params_view.hpp>
params_view(
    params_view const& other,
    encoding_opts opt) noexcept;


Description

After construction both views will reference the same character buffer but this instance will use the specified encoding_opts when the values are decoded.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing

Parameters

Name Description
other The object to copy
opt The options for decoding
Assignment

Synopsis

Declared in <boost/url/params_view.hpp>
params_view&
operator=(params_view const& other) = default;


Description

After assignment, both views reference the same underlying character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Return Value

A reference to this object

Parameters

Name Description
other The object to assign
A reference to a valid percent-encoded string

Synopsis

Declared in <boost/url/pct_string_view.hpp>
class pct_string_view final
    : public grammar::string_view_base


Base Classes

Name Description
grammar::string_view_baseCommon functionality for string views

Types

Name Description
const_iterator The const iterator type
const_pointer The const pointer type
const_reference The const reference type
const_reverse_iterator The const reverse iterator type
difference_type The difference type
iterator The iterator type
pointer The pointer type
reference The reference type
reverse_iterator The reverse iterator type
size_type The size type
traits_type The character traits
value_type The value type

Member Functions

Name Description
pct_string_view [constructor]Constructors
operator= Assignment
at Access a character
back Return the last character
begin Return an iterator to the beginning
cbegin Return an iterator to the beginning
cend Return an iterator to the end
compare Return the result of comparing to another string
contains Return true if matching characters are found
copy Copy the characters to another buffer
crbegin Return a reverse iterator to the end
crend Return a reverse iterator to the beginning
data Return a pointer to the character buffer
decode Return the string with percent-decoding
decoded_size Return the decoded size
empty Return true if the string is empty
end Return an iterator to the end
ends_with Return true if a matching suffix exists
find Return the position of matching characters
find_first_not_of Return the position of the first non-match
find_first_of Return the position of the first match
find_last_not_of Return the position of the last non-match
find_last_of Return the position of the last match
front Return the first character
length Return the size
max_size Return the maximum allowed size
operator* Return the string as a range of decoded characters
operator-> Arrow support
operator[] Access a character
rbegin Return a reverse iterator to the end
rend Return a reverse iterator to the beginning
rfind Return the position of matching characters
size Return the size
starts_with Return true if a matching prefix exists
substr Return a view to part of the string
swap Swap
operator std::string Conversion
operator std::string_view Conversion

Static Data Members

Name Description
npos A constant used to represent "no position"

Protected Member Functions

Name Description
operator= Assignment
swap Swap

Protected Data Members

Name Description
s_ The referenced character buffer

Friends

|===
Name Description
make_pct_string_view Return a valid percent-encoded string

Description

Objects of this type behave like a core::string_view and have the same interface, but offer an additional invariant: they can only be constructed from strings containing valid percent-escapes.

Attempting construction from a string containing invalid or malformed percent escapes results in an exception.

Constructors

Synopses

Declared in <boost/url/pct_string_view.hpp>
Constructor
constexpr
pct_string_view() = default;


» more... Constructor
constexpr
pct_string_view(pct_string_view const& other) = default;


» more... Constructor (deleted)
pct_string_view(std::nullptr_t value) = delete;


» more... Constructor
pct_string_view(core::string_view s);


» more... Constructor
template<std::convertible_to<core::string_view> String>
requires std::is_convertible<
                String,
                core::string_view
                    >::value
constexpr
pct_string_view(String const& s);


» more... Constructor
pct_string_view(
    char const* s,
    std::size_t len);


» more...

Exceptions

Name Thrown on
system_error The string contains an invalid percent encoding.

Template Parameters

Name Description
String A type convertible to core::string_view

Parameters

Name Description
other The string to copy.
s The string to construct from.
len The length of the string.
Constructor

Synopsis

Declared in <boost/url/pct_string_view.hpp>
constexpr
pct_string_view() = default;


Description

Default constructed string are empty.

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/pct_string_view.hpp>
constexpr
pct_string_view(pct_string_view const& other) = default;


Description

The copy references the same underlying character buffer. Ownership is not transferred.

Postconditions

this->data() == other.data()

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The string to copy.
Constructor (deleted)

Synopsis

Declared in <boost/url/pct_string_view.hpp>
pct_string_view(std::nullptr_t value) = delete;


Parameters

Name Description
value The object to construct from
Constructor

Synopsis

Declared in <boost/url/pct_string_view.hpp>
pct_string_view(core::string_view s);


Description

The newly constructed string references the specified character buffer. Ownership is not transferred.

Postconditions

this->data() == s.data() && this->size() == s.size()

Complexity

Linear in s.size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error The string contains an invalid percent encoding.

Parameters

Name Description
s The string to construct from.
Constructor

Synopsis

Declared in <boost/url/pct_string_view.hpp>
template<std::convertible_to<core::string_view> String>
requires std::is_convertible<
                String,
                core::string_view
                    >::value
constexpr
pct_string_view(String const& s);


Description

The newly constructed string references the specified character buffer. Ownership is not transferred.

Postconditions

this->data() == core::string_view(s).data()

Complexity

Linear in core::string_view(s).size().

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error The string contains an invalid percent encoding.

Template Parameters

Name Description
String A type convertible to core::string_view

Parameters

Name Description
s The string to construct from.
Constructor

Synopsis

Declared in <boost/url/pct_string_view.hpp>
pct_string_view(
    char const* s,
    std::size_t len);


Description

The newly constructed string references the specified character buffer. Ownership is not transferred.

Postconditions

this->data() == s && this->size() == len

Complexity

Linear in len.

Exception Safety

Exceptions thrown on invalid input.

Exceptions

Name Thrown on
system_error The string contains an invalid percent encoding.

Parameters

Name Description
s The string to construct from.
len The length of the string.
Assignment

Synopsis

Declared in <boost/url/pct_string_view.hpp>
constexpr
pct_string_view&
operator=(pct_string_view const& other) = default;


Description

The copy references the same underlying character buffer. Ownership is not transferred.

Postconditions

this->data() == other.data()

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A reference to this object.

Parameters

Name Description
other The string to copy.
Return the string with percent-decoding

Synopsis

Declared in <boost/url/pct_string_view.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
decode(
    encoding_opts opt = {},
    StringToken&& token) const;


Description

This function converts percent escapes in the string into ordinary characters and returns the result. When called with no arguments, the return type is std::string. Otherwise, the return type and style of output is determined by which string token is passed.

Example

assert( pct_string_view( "Program%20Files" ).decode() == "Program Files" );

Complexity

Linear in this->size().

Exception Safety

Calls to allocate may throw. String tokens may throw exceptions.

Return Value

The decoded string.

Parameters

Name Description
opt The options for encoding. If this parameter is omitted, the default options are used.
token An optional string token. If this parameter is omitted, then a new std::string is returned. Otherwise, the function return type is the result type of the token.

See Also

encoding_opts, string_token::return_string.

Return the decoded size

Synopsis

Declared in <boost/url/pct_string_view.hpp>
constexpr
std::size_t
decoded_size() const noexcept;


Description

This function returns the number of characters in the resulting string if percent escapes were converted into ordinary characters.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of characters in the decoded string.
Return the string as a range of decoded characters

Synopsis

Declared in <boost/url/pct_string_view.hpp>
decode_view
operator*() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A range of decoded characters.

See Also

decode_view.

Arrow support

Synopsis

Declared in <boost/url/pct_string_view.hpp>
pct_string_view const*
operator->() const noexcept;


Return Value

A pointer to this object.
Swap

Synopsis

Declared in <boost/url/pct_string_view.hpp>
void
swap(pct_string_view& s) noexcept;


Parameters

Name Description
s The object to swap with
Common functionality for containers

Synopsis

Declared in <boost/url/segments_base.hpp>
class segments_base;


Types

Name Description
iterator A Bidirectional iterator to a path segment
const_iterator A Bidirectional iterator to a path segment
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type used to represent size.
value_type The value type

Member Functions

Name Description
back Return the last segment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
empty Return true if there are no segments
end Return an iterator to the end
front Return the first segment
is_absolute Returns true if this references an absolute path.
size Return the number of segments

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
segments_view A view representing path segments in a URL
segments_ref A view representing path segments in a URL
url_view_base Common functionality for containers

Derived Classes

Name Description
segments_ref A view representing path segments in a URL
segments_view A view representing path segments in a URL

Description

This base class is used by the library to provide common member functions for containers. This cannot be instantiated directly; Instead, use one of the containers or functions:

Containers

  • segments_ref
  • segments_view
  • segments_encoded_ref
  • segments_encoded_view
A Bidirectional iterator to a path segment

Synopsis

Declared in <boost/url/segments_base.hpp>
using const_iterator = iterator;


Description

Objects of this type allow iteration through the segments in the path. Any percent-escapes in returned strings are decoded first. The values returned are read-only; changes to segments must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced belong to the iterator and become invalidated when that particular iterator is incremented, decremented, or destroyed.

The reference type

Synopsis

Declared in <boost/url/segments_base.hpp>
using const_reference = std::string;


Description

This is the type of value returned when iterators of the view are dereferenced.

A signed integer type used to represent differences.

Synopsis

Declared in <boost/url/segments_base.hpp>
using difference_type = std::ptrdiff_t;


The reference type

Synopsis

Declared in <boost/url/segments_base.hpp>
using reference = std::string;


Description

This is the type of value returned when iterators of the view are dereferenced.

An unsigned integer type used to represent size.

Synopsis

Declared in <boost/url/segments_base.hpp>
using size_type = std::size_t;


The value type

Synopsis

Declared in <boost/url/segments_base.hpp>
using value_type = std::string;


Description

Values of this type represent a segment where unique ownership is retained by making a copy.

Example

segments_base::value_type ps( url_view( "/path/to/file.txt" ).segments().back() );
A Bidirectional iterator to a path segment

Synopsis

Declared in <boost/url/impl/segments_base.hpp>
class iterator { /* see-below */ };


Friends

|===
Name Description
segments_ref A view representing path segments in a URL
segments_base Common functionality for containers

Description

Objects of this type allow iteration through the segments in the path. Any percent-escapes in returned strings are decoded first. The values returned are read-only; changes to segments must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced belong to the iterator and become invalidated when that particular iterator is incremented, decremented, or destroyed.

Return the last segment

Synopsis

Declared in <boost/url/segments_base.hpp>
std::string
back() const noexcept;


Description

Preconditions

this->empty() == false

Example

assert( url_view( "/path/to/file.txt" ).segments().back() == "file.txt" );

Preconditions

this->empty() == false

Effects

return *--end();

Complexity

Linear in this->back().size().

Exception Safety

Calls to allocate may throw.

Return Value

The last segment.
Return an iterator to the beginning

Synopsis

Declared in <boost/url/segments_base.hpp>
iterator
begin() const noexcept;


Description

Complexity

Linear in this->front().size() or constant if this->empty().

Exception Safety

Throws nothing.

Return Value

An iterator to the first segment.
Return the referenced character buffer.

Synopsis

Declared in <boost/url/segments_base.hpp>
pct_string_view
buffer() const noexcept;


Description

This function returns the character buffer referenced by the view. The returned string may contain percent escapes.

Example

assert( url_view( "/path/to/file.txt" ).segments().buffer() == "/path/to/file.txt" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A string containing the path.
Return true if there are no segments

Synopsis

Declared in <boost/url/segments_base.hpp>
bool
empty() const noexcept;


Description

Example

assert( ! url_view( "/index.htm" ).segments().empty() );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if there are no segments, otherwise false.
Return an iterator to the end

Synopsis

Declared in <boost/url/segments_base.hpp>
iterator
end() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

An iterator to one past the last segment.
Return the first segment

Synopsis

Declared in <boost/url/segments_base.hpp>
std::string
front() const noexcept;


Description

This function returns a string with the first segment of the path without any leading or trailing '/' separators. Any percent-escapes in the string are decoded first.

Preconditions

this->empty() == false

Effects

return *begin();

Example

assert( url_view( "/path/to/file.txt" ).segments().front() == "path" );

Complexity

Linear in this->front().size().

Exception Safety

Calls to allocate may throw.

Return Value

The first segment.
Returns true if this references an absolute path.

Synopsis

Declared in <boost/url/segments_base.hpp>
bool
is_absolute() const noexcept;


Description

Absolute paths always start with a forward slash ('/').

Example

assert( url_view( "/path/to/file.txt" ).segments().is_absolute() == true );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if the path is absolute, otherwise false.
Return the number of segments

Synopsis

Declared in <boost/url/segments_base.hpp>
std::size_t
size() const noexcept;


Description

Example

assert( url_view( "/path/to/file.txt" ).segments().size() == 3 );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of segments.
Return the maximum number of characters possible

Synopsis

Declared in <boost/url/segments_base.hpp>
constexpr
static
std::size_t
max_size() noexcept;


Description

This represents the largest number of characters that are possible in a path, not including any null terminator.

Exception Safety

Throws nothing.

Return Value

The maximum number of characters possible.
Common functionality for containers

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
class segments_encoded_base;


Types

Name Description
iterator A Bidirectional iterator to a path segment
const_iterator A Bidirectional iterator to a path segment
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type used to represent size.
value_type The value type

Member Functions

Name Description
back Return the last segment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
empty Return true if there are no segments
end Return an iterator to the end
front Return the first segment
is_absolute Returns true if this references an absolute path.
size Return the number of segments

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
segments_encoded_view A view representing path segments in a URL
segments_encoded_ref A view representing path segments in a URL
url_view_base Common functionality for containers

Derived Classes

Name Description
segments_encoded_ref A view representing path segments in a URL
segments_encoded_view A view representing path segments in a URL

Description

This base class is used by the library to provide common member functions for containers. This cannot be instantiated directly; Instead, use one of the containers or functions:

Containers

  • segments_ref
  • segments_view
  • segments_encoded_ref
  • segments_encoded_view
A Bidirectional iterator to a path segment

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
using const_iterator = iterator;


Description

Objects of this type allow iteration through the segments in the path. Strings returned by iterators may contain percent escapes. The values returned are read-only; changes to segments must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced refer to the underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced by any container or iterator.

The reference type

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
using const_reference = pct_string_view;


Description

This is the type of value returned when iterators of the view are dereferenced.

A signed integer type used to represent differences.

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
using difference_type = std::ptrdiff_t;


The reference type

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
using reference = pct_string_view;


Description

This is the type of value returned when iterators of the view are dereferenced.

An unsigned integer type used to represent size.

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
using size_type = std::size_t;


The value type

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
using value_type = std::string;


Description

Values of this type represent a segment where unique ownership is retained by making a copy.

Example

segments_encoded_base::value_type ps( url_view( "/path/to/file.txt" ).encoded_segments().back() );
A Bidirectional iterator to a path segment

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
class iterator { /* see-below */ };


Friends

|===
Name Description
segments_encoded_ref A view representing path segments in a URL
segments_encoded_base Common functionality for containers
url_base Common functionality for containers

Description

Objects of this type allow iteration through the segments in the path. Strings returned by iterators may contain percent escapes. The values returned are read-only; changes to segments must be made through the container instead, if the container supports modification.

The strings produced when iterators are dereferenced refer to the underlying character buffer. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced by any container or iterator.

Return the last segment

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
pct_string_view
back() const noexcept;


Description

This function returns a string with the last segment of the path without any leading or trailing '/' separators. The returned string may contain percent escapes.

Preconditions

this->empty() == false

Example

assert( url_view( "/path/to/file.txt" ).encoded_segments().back() == "file.txt" );

Preconditions

this->empty() == false

Effects

return *--end();

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The last segment.
Return an iterator to the beginning

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
iterator
begin() const noexcept;


Description

Complexity

Linear in this->front().size() or constant if this->empty().

Exception Safety

Throws nothing.

Return Value

An iterator to the first segment.
Return the referenced character buffer.

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
pct_string_view
buffer() const noexcept;


Description

This function returns the character buffer referenced by the view. The returned string may contain percent escapes.

Example

assert( url_view( "/path/to/file.txt" ).encoded_segments().buffer() == "/path/to/file.txt" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A string view of the buffer.
Return true if there are no segments

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
bool
empty() const noexcept;


Description

Example

assert( ! url_view( "/index.htm" ).encoded_segments().empty() );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if there are no segments, otherwise false.
Return an iterator to the end

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
iterator
end() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

An iterator to one past the last segment.
Return the first segment

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
pct_string_view
front() const noexcept;


Description

This function returns a string with the first segment of the path without any leading or trailing '/' separators. The returned string may contain percent escapes.

Preconditions

this->empty() == false

Effects

return *begin();

Example

assert( url_view( "/path/to/file.txt" ).encoded_segments().front() == "path" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The first segment.
Returns true if this references an absolute path.

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
bool
is_absolute() const noexcept;


Description

Absolute paths always start with a forward slash ('/').

Example

assert( url_view( "/path/to/file.txt" ).encoded_segments().is_absolute() == true );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

true if the path is absolute, otherwise false.
Return the number of segments

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
std::size_t
size() const noexcept;


Description

Example

assert( url_view( "/path/to/file.txt" ).encoded_segments().size() == 3 );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of segments.
Return the maximum number of characters possible

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
constexpr
static
std::size_t
max_size() noexcept;


Description

This represents the largest number of characters that are possible in a path, not including any null terminator.

Exception Safety

Throws nothing.

Return Value

The maximum number of characters possible.
A view representing path segments in a URL

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
class segments_encoded_ref
    : public segments_encoded_base


Base Classes

Name Description
segments_encoded_baseCommon functionality for containers

Types

Name Description
iterator A Bidirectional iterator to a path segment
const_iterator A Bidirectional iterator to a path segment
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type used to represent size.
value_type The value type

Member Functions

Name Description
segments_encoded_ref [constructor]Constructor
operator= Assignment
assign Assign segments
back Return the last segment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
clear Clear the contents of the container
empty Return true if there are no segments
end Return an iterator to the end
erase Erase segments
front Return the first segment
insert Insert segments
is_absolute Returns true if this references an absolute path.
pop_back Remove the last segment
push_back Append a segment
replace Replace segments
size Return the number of segments
url Return the referenced url
operator segments_encoded_view Conversion

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
url_base Common functionality for containers

Description

Objects of this type are used to interpret the path as a bidirectional view of segments, where each segment is a string which may contain percent-escapes.

The view does not retain ownership of the elements and instead references the original character buffer. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

The view is modifiable; calling non-const members causes changes to the referenced url.

Example

url u( "/path/to/file.txt" ); segments_encoded_ref ps = u.encoded_segments();

The strings returned when iterators are dereferenced have type pct_string_view and may contain percent-escapes.

Reserved characters in inputs are automatically escaped. Escapes in inputs are preserved.

Exceptions are thrown on invalid inputs.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it. Modifications made through the container invalidate some or all iterators:

  • push_back : Only end().
  • assign, clear, operator= : All elements.
  • erase : Erased elements and all elements after (including end()).
  • insert : All elements at or after the insertion point (including end()).
  • replace : Modified elements and all elements after (including end()).

See Also

segments_encoded_view, segments_view, segments_ref.

Constructor

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
constexpr
segments_encoded_ref(segments_encoded_ref const& other) = default;


Description

After construction, both views reference the same url. Ownership is not transferred; the caller is responsible for ensuring the lifetime of the url extends until it is no longer referenced.

Postconditions

&this->url() == &other.url();

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
Assignment

Synopses

Declared in <boost/url/segments_encoded_ref.hpp>
Assignment
segments_encoded_ref&
operator=(segments_encoded_ref const& other);


» more... Assignment
segments_encoded_ref&
operator=(std::initializer_list<pct_string_view> init);


» more... Assignment
segments_encoded_ref&
operator=(segments_encoded_view const& other);


» more...

Exceptions

Name Thrown on
system_error The list contains an invalid percent-encoding.

Return Value

  • A reference to this object.
  • A reference to this.

Parameters

Name Description
other The segments to assign.
init The list of segments to assign.
Assignment

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
segments_encoded_ref&
operator=(segments_encoded_ref const& other);


Description

The existing contents are replaced by a copy of the other segments.

All iterators are invalidated.

NOTE

None of the character buffers referenced by other may overlap the buffer of the underlying url, or else the behavior is undefined.

Effects

this->assign( other.begin(), other.end() );

Complexity

Linear in other.buffer().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The segments to assign.
Assignment

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
segments_encoded_ref&
operator=(std::initializer_list<pct_string_view> init);


Description

The existing contents are replaced by a copy of the contents of the initializer list. Reserved characters in the list are automatically escaped. Escapes in the list are preserved.

All iterators are invalidated.

Example

url u; u.encoded_segments() = {"path", "to", "file.txt"};

Preconditions

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

Effects

this->assign( init.begin(), init.end() );

Complexity

Linear in init.size() + this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The list contains an invalid percent-encoding.

Return Value

A reference to this.

Parameters

Name Description
init The list of segments to assign.
Assignment

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
segments_encoded_ref&
operator=(segments_encoded_view const& other);


Description

The existing contents are replaced by a copy of the other segments.

All iterators are invalidated.

NOTE

None of the character buffers referenced by other may overlap the buffer of the underlying url, or else the behavior is undefined.

Effects

this->assign( other.begin(), other.end() );

Complexity

Linear in other.buffer().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The segments to assign.
Assign segments

Synopses

Declared in <boost/url/segments_encoded_ref.hpp>
Assign segments
void
assign(std::initializer_list<pct_string_view> init);


» more... Assign segments
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error The list contains an invalid percent-encoding.

Parameters

Name Description
init The list of segments to assign.
first The first element in the range.
last One past the last element in the range.
Assign segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
void
assign(std::initializer_list<pct_string_view> init);


Description

The existing contents are replaced by a copy of the contents of the initializer list. Reserved characters in the list are automatically escaped. Escapes in the list are preserved.

All iterators are invalidated.

NOTE

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

Example

url u; u.segments().assign( {"path", "to", "file.txt"} );

Complexity

Linear in init.size() + this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The list contains an invalid percent-encoding.

Parameters

Name Description
init The list of segments to assign.
Assign segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


Description

The existing contents are replaced by a copy of the contents of the range. Reserved characters in the range are automatically escaped. Escapes in the range are preserved.

All iterators are invalidated.

NOTE

None of the character buffers referenced by the range may overlap the character buffer of the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, pct_string_view >::value == true

Complexity

Linear in std::distance( first, last ) + this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Parameters

Name Description
first The first element in the range.
last One past the last element in the range.
Clear the contents of the container

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
void
clear() noexcept;


Description

All iterators are invalidated.

Effects

this->url().set_encoded_path( "" );

Postconditions

this->empty() == true

Complexity

Linear in this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

Throws nothing.

Erase segments

Synopses

Declared in <boost/url/segments_encoded_ref.hpp>
Erase segments
iterator
erase(iterator pos) noexcept;


» more... Erase segments
iterator
erase(
    iterator first,
    iterator last) noexcept;


» more...

Return Value

  • An iterator to one past the removed segment.
  • An iterator to one past the removed range.

Parameters

Name Description
pos An iterator to the element.
first The first element in the range to erase.
last One past the last element in the range to erase.
Erase segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
erase(iterator pos) noexcept;


Description

This function removes a segment.

All iterators that are equal to pos or come after are invalidated.

Complexity

Linear in this->url().encoded_resource().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed segment.

Parameters

Name Description
pos An iterator to the element.
Erase segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
erase(
    iterator first,
    iterator last) noexcept;


Description

This function removes a range of segments from the container.

All iterators that are equal to first or come after are invalidated.

Complexity

Linear in this->url().encoded_resource().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed range.

Parameters

Name Description
first The first element in the range to erase.
last One past the last element in the range to erase.
Insert segments

Synopses

Declared in <boost/url/segments_encoded_ref.hpp>
Insert segments
iterator
insert(
    iterator before,
    pct_string_view s);


» more... Insert segments
iterator
insert(
    iterator before,
    std::initializer_list<pct_string_view> init);


» more... Insert segments
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error The segment contains an invalid percent-encoding.

Return Value

  • An iterator to the inserted segment.
  • An iterator to the first element inserted, or before if init.size() == 0.
  • An iterator to the first segment inserted, or before if init.empty().

Parameters

Name Description
before An iterator before which the segment is inserted. This may be equal to end().
s The segment to insert.
init The list of segments to insert.
first The first element in the range to insert.
last One past the last element in the range to insert.
Insert segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
insert(
    iterator before,
    pct_string_view s);


Description

This function inserts a segment before the specified position. Reserved characters in the segment are automatically escaped. Escapes in the segment are preserved.

All iterators that are equal to before or come after are invalidated.

Complexity

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

Exception Safety

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

Exceptions

Name Thrown on
system_error The segment contains an invalid percent-encoding.

Return Value

An iterator to the inserted segment.

Parameters

Name Description
before An iterator before which the segment is inserted. This may be equal to end().
s The segment to insert.
Insert segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
insert(
    iterator before,
    std::initializer_list<pct_string_view> init);


Description

This function inserts the segments in an initializer list before the specified position. Reserved characters in the list are automatically escaped. Escapes in the list are preserved.

All iterators that are equal to before or come after are invalidated.

NOTE

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

Example

url u( "/file.txt" ); u.encoded_segments().insert( u.encoded_segments().begin(), { "path", "to" } );

Complexity

Linear in init.size() + this->url().encoded_resource().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The list contains an invalid percent-encoding.

Return Value

An iterator to the first element inserted, or before if init.size() == 0.

Parameters

Name Description
before An iterator before which the list is inserted. This may be equal to end().
init The list of segments to insert.
Insert segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


Description

This function inserts the segments in a range before the specified position. Reserved characters in the range are automatically escaped. Escapes in the range are preserved.

All iterators that are equal to before or come after are invalidated.

NOTE

None of the character buffers referenced by the range may overlap the character buffer of the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, pct_string_view >::value == true

Complexity

Linear in std::distance( first, last ) + this->url().encoded_resource().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Return Value

An iterator to the first segment inserted, or before if init.empty().

Parameters

Name Description
before An iterator before which the range is inserted. This may be equal to end().
first The first element in the range to insert.
last One past the last element in the range to insert.
Remove the last segment

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
void
pop_back() noexcept;


Description

This function removes the last segment from the container.

Iterators to the last segment as well as all end iterators are invalidated.

Preconditions

!this->empty()

Exception Safety

Throws nothing.

Append a segment

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
void
push_back(pct_string_view s);


Description

This function appends a segment to the end of the path. Reserved characters in the string are automatically escaped. Escapes in the string are preserved.

All end iterators are invalidated.

Postconditions

this->back() == s

Exception Safety

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

Exceptions

Name Thrown on
system_error The string contains an invalid percent-encoding.

Parameters

Name Description
s The segment to append.
Replace segments

Synopses

Declared in <boost/url/segments_encoded_ref.hpp>
Replace segments
iterator
replace(
    iterator pos,
    pct_string_view s);


» more... Replace segments
iterator
replace(
    iterator from,
    iterator to,
    pct_string_view s);


» more... Replace segments
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<pct_string_view> init);


» more... Replace segments
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


» more...

Exceptions

Name Thrown on
system_error The string contains an invalid percent-encoding.

Return Value

  • An iterator to the replaced segment.
  • An iterator to the new segment.
  • An iterator to the first segment inserted, or one past to if init.size() == 0.

Parameters

Name Description
pos An iterator to the segment.
s The string to assign.
from The first element in the range of segments to replace.
to One past the last element in the range of segments to replace.
init The list of segments to assign.
first The first element in the new range of segments.
last One past the last element in the new range of segments.
Replace segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
replace(
    iterator pos,
    pct_string_view s);


Description

This function replaces the segment at the specified position. Reserved characters in the string are automatically escaped. Escapes in the string are preserved.

All iterators that are equal to pos or come after are invalidated.

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the replaced segment.

Parameters

Name Description
pos An iterator to the segment.
s The string to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
replace(
    iterator from,
    iterator to,
    pct_string_view s);


Description

This function replaces a range of segments with one segment. Reserved characters in the string are automatically escaped. Escapes in the string are preserved.

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

Complexity

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

Exception Safety

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

Exceptions

Name Thrown on
system_error The string contains an invalid percent-encoding.

Return Value

An iterator to the new segment.

Parameters

Name Description
from The first element in the range of segments to replace.
to One past the last element in the range of segments to replace.
s The string to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<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.

Preconditions

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

Complexity

Linear in init.size() + this->url().encoded_resouce().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The list contains an invalid percent-encoding.

Return Value

An iterator to the first segment inserted, or one past to if init.size() == 0.

Parameters

Name Description
from The first element in the range of segments to replace.
to One past the last element in the range of segments to replace.
init The list of segments to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


Description

This function replaces a range of segments with annother range of segments. Reserved characters in the new range are automatically escaped. Escapes in the new range are preserved.

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

Preconditions

None of the character buffers referenced by the new range may overlap the character buffer of the underlying url, or else the behavior is undefined.

Complexity

Linear in std::distance( first, last ) + this->url().encoded_resouce().size().

Exception Safety

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

Exceptions

Name Thrown on
system_error The range contains an invalid percent-encoding.

Return Value

An iterator to the first segment inserted, or one past to if init.size() == 0.

Parameters

Name Description
from The first element in the range of segments to replace.
to One past the last element in the range of segments to replace.
first The first element in the new range of segments.
last One past the last element in the new range of segments.
Return the referenced url

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
url_base&
url() const noexcept;


Description

This function returns the url referenced by the view.

Example

url u( "/path/to/file.txt" ); assert( &u.encoded_segments().url() == &u );

Exception Safety

Throws nothing.

Return Value

A reference to the url.
Conversion

Synopsis

Declared in <boost/url/segments_encoded_ref.hpp>
operator segments_encoded_view() const noexcept;


Return Value

A view of the segments.

See Also

segments_encoded_view.

A view representing path segments in a URL

Synopsis

Declared in <boost/url/segments_encoded_view.hpp>
class segments_encoded_view
    : public segments_encoded_base


Base Classes

Name Description
segments_encoded_baseCommon functionality for containers

Types

Name Description
iterator A Bidirectional iterator to a path segment
const_iterator A Bidirectional iterator to a path segment
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type used to represent size.
value_type The value type

Member Functions

Name Description
segments_encoded_view [constructor]Constructor
operator= Assignment
back Return the last segment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
empty Return true if there are no segments
end Return an iterator to the end
front Return the first segment
is_absolute Returns true if this references an absolute path.
size Return the number of segments
operator segments_view Conversion

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
parse_path Parse a string and return an encoded segment view
segments_encoded_ref A view representing path segments in a URL
url_view_base Common functionality for containers

Description

Objects of this type are used to interpret the path as a bidirectional view of segment strings.

The view does not retain ownership of the elements and instead references the original character buffer. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

url_view u( "/path/to/file.txt" ); segments_encoded_view ps = u.encoded_segments(); assert( ps.buffer().data() == u.buffer().data() );

Strings produced when elements are returned have type param_pct_view and represent encoded strings. Strings passed to member functions may contain percent escapes, and throw exceptions on invalid inputs.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it.

See Also

segments_view, segments_encoded_ref, segments_ref.

Constructor

Synopses

Declared in <boost/url/segments_encoded_view.hpp>
Constructor
constexpr
segments_encoded_view() = default;


» more... Constructor
constexpr
segments_encoded_view(segments_encoded_view const& other) noexcept = default;


» more... Constructor
segments_encoded_view(core::string_view s);


» more...

Exceptions

Name Thrown on
system_error s contains an invalid path.

Parameters

Name Description
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/segments_encoded_view.hpp>
constexpr
segments_encoded_view() = default;


Description

Default-constructed segments have zero elements.

Example

segments_encoded_view ps;

Effects

return segments_encoded_view( "" );

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/segments_encoded_view.hpp>
constexpr
segments_encoded_view(segments_encoded_view const& other) noexcept = default;


Description

After construction, both views reference the same character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing

Parameters

Name Description
other The object to copy construct from
Constructor

Synopsis

Declared in <boost/url/segments_encoded_view.hpp>
segments_encoded_view(core::string_view s);


Description

This function constructs segments from a valid path string, which can contain percent escapes. Upon construction, the view references the character buffer pointed to by s. caller is responsible for ensuring that the lifetime of the buffer extends until the view is destroyed.

Example

segments_encoded_view ps( "/path/to/file.txt" );

Effects

return parse_path( s ).value();

Postconditions

this->buffer().data() == s.data()

Complexity

Linear in s.

Exception Safety

Exceptions thrown on invalid input.

BNF

path = [ "/" ] [ segment *( "/" segment ) ] segment = *pchar

Specification

Exceptions

Name Thrown on
system_error s contains an invalid path.

Parameters

Name Description
s The string to parse.
Assignment

Synopsis

Declared in <boost/url/segments_encoded_view.hpp>
constexpr
segments_encoded_view&
operator=(segments_encoded_view const& other) = default;


Description

After assignment, both views reference the same underlying character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Return Value

Reference to this object

Parameters

Name Description
other The segments to copy.
Conversion

Synopsis

Declared in <boost/url/segments_encoded_view.hpp>
operator segments_view() const noexcept;


Description

This conversion returns a new view which references the same underlying character buffer, and whose iterators and members return ordinary strings with decoding applied to any percent escapes.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Example

segments_view ps = parse_path( "/path/to/file.txt" ).value();

Postconditions

segments_view( *this ).buffer().data() == this->buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Return Value

A view of the segments.
A view representing path segments in a URL

Synopsis

Declared in <boost/url/segments_ref.hpp>
class segments_ref
    : public segments_base


Base Classes

Name Description
segments_baseCommon functionality for containers

Types

Name Description
iterator A Bidirectional iterator to a path segment
const_iterator A Bidirectional iterator to a path segment
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type used to represent size.
value_type The value type

Member Functions

Name Description
segments_ref [constructor]Constructor
operator= Assignment
assign Assign segments
back Return the last segment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
clear Clear the contents of the container
empty Return true if there are no segments
end Return an iterator to the end
erase Erase segments
front Return the first segment
insert Insert segments
is_absolute Returns true if this references an absolute path.
pop_back Remove the last segment
push_back Append a segment
replace Replace segments
size Return the number of segments
url Return the referenced url
operator segments_view Conversion

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
segments_encoded_ref A view representing path segments in a URL
url_base Common functionality for containers

Description

Objects of this type are used to interpret the path as a bidirectional view of segments, where each segment is a string with percent escapes automatically decoded.

The view does not retain ownership of the elements and instead references the original character buffer. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

The view is modifiable; calling non-const members causes changes to the referenced url.

Example

url u( "/path/to/file.txt" ); segments_ref ps = u.segments();

Percent escapes in strings returned when dereferencing iterators are automatically decoded. Reserved characters in strings supplied to modifier functions are automatically percent-escaped.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it. Modifications made through the container invalidate some or all iterators:

  • push_back : Only end().
  • assign, clear, operator= : All elements.
  • erase : Erased elements and all elements after (including end()).
  • insert : All elements at or after the insertion point (including end()).
  • replace : Modified elements and all elements after (including end()).

See Also

segments_encoded_ref, segments_encoded_view, segments_view.

Constructor

Synopsis

Declared in <boost/url/segments_ref.hpp>
constexpr
segments_ref(segments_ref const& other) = default;


Description

After construction, both views reference the same url. Ownership is not transferred; the caller is responsible for ensuring the lifetime of the url extends until it is no longer referenced.

Postconditions

&this->url() == &other.url();

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
Assignment

Synopses

Declared in <boost/url/segments_ref.hpp>
Assignment
segments_ref&
operator=(segments_ref const& other);


» more... Assignment
segments_ref&
operator=(std::initializer_list<core::string_view> init);


» more... Assignment
segments_ref&
operator=(segments_view const& other);


» more...

Return Value

A reference to this object.

Parameters

Name Description
other The segments to assign.
init The list of segments to assign.
Assignment

Synopsis

Declared in <boost/url/segments_ref.hpp>
segments_ref&
operator=(segments_ref const& other);


Description

The existing contents are replaced by a copy of the other segments.

All iterators are invalidated.

NOTE

None of the character buffers referenced by other may overlap the buffer of the underlying url, or else the behavior is undefined.

Effects

this->assign( other.begin(), other.end() );

Complexity

Linear in other.buffer().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The segments to assign.
Assignment

Synopsis

Declared in <boost/url/segments_ref.hpp>
segments_ref&
operator=(std::initializer_list<core::string_view> init);


Description

The existing contents are replaced by a copy of the contents of the initializer list. Reserved characters in the list are automatically escaped.

All iterators are invalidated.

Example

url u; u.segments() = { "path", "to", "file.txt" };

Preconditions

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

Effects

this->assign( init.begin(), init.end() );

Complexity

Linear in init.size() + this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
init The list of segments to assign.
Assignment

Synopsis

Declared in <boost/url/segments_ref.hpp>
segments_ref&
operator=(segments_view const& other);


Description

The existing contents are replaced by a copy of the other segments.

All iterators are invalidated.

NOTE

None of the character buffers referenced by other may overlap the buffer of the underlying url, or else the behavior is undefined.

Effects

this->assign( other.begin(), other.end() );

Complexity

Linear in other.buffer().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
other The segments to assign.
Assign segments

Synopses

Declared in <boost/url/segments_ref.hpp>
Assign segments
void
assign(std::initializer_list<core::string_view> init);


» more... Assign segments
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


» more...

Parameters

Name Description
init The list of segments to assign.
first The beginning of the range of segments to assign.
last The end of the range of segments to assign.
Assign segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
void
assign(std::initializer_list<core::string_view> init);


Description

The existing contents are replaced by a copy of the contents of the initializer list. Reserved characters in the list are automatically escaped.

All iterators are invalidated.

NOTE

None of the character buffers referenced by init may overlap the character buffer of the underlying url, or else the behavior is undefined.

Example

url u; u.segments().assign( { "path", "to", "file.txt" } );

Complexity

Linear in init.size() + this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Parameters

Name Description
init The list of segments to assign.
Assign segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
template<class FwdIt>
void
assign(
    FwdIt first,
    FwdIt last);


Description

The existing contents are replaced by a copy of the contents of the range. Reserved characters in the range are automatically escaped.

All iterators are invalidated.

NOTE

None of the character buffers referenced by the range may overlap the character buffer of the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, core::string_view >::value == true

Complexity

Linear in std::distance( first, last ) + this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Parameters

Name Description
first The beginning of the range of segments to assign.
last The end of the range of segments to assign.
Clear the contents of the container

Synopsis

Declared in <boost/url/segments_ref.hpp>
void
clear() noexcept;


Description

All iterators are invalidated.

Effects

this->url().set_encoded_path( "" );

Postconditions

this->empty() == true

Complexity

Linear in this->url().encoded_query().size() + this->url().encoded_fragment().size().

Exception Safety

Throws nothing.

Erase segments

Synopses

Declared in <boost/url/segments_ref.hpp>
Erase segments
iterator
erase(iterator pos) noexcept;


» more... Erase segments
iterator
erase(
    iterator first,
    iterator last) noexcept;


» more...

Return Value

  • An iterator to one past the removed segment.
  • An iterator to one past the removed range.

Parameters

Name Description
pos An iterator to the segment.
first The beginning of the range to remove.
last The end of the range to remove.
Erase segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
erase(iterator pos) noexcept;


Description

This function removes a segment.

All iterators that are equal to pos or come after are invalidated.

Complexity

Linear in this->url().encoded_resource().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed segment.

Parameters

Name Description
pos An iterator to the segment.
Erase segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
erase(
    iterator first,
    iterator last) noexcept;


Description

This function removes a range of segments.

All iterators that are equal to first or come after are invalidated.

Complexity

Linear in this->url().encoded_resource().size().

Exception Safety

Throws nothing.

Return Value

An iterator to one past the removed range.

Parameters

Name Description
first The beginning of the range to remove.
last The end of the range to remove.
Insert segments

Synopses

Declared in <boost/url/segments_ref.hpp>
Insert segments
iterator
insert(
    iterator before,
    core::string_view s);


» more... Insert segments
iterator
insert(
    iterator before,
    std::initializer_list<core::string_view> init);


» more... Insert segments
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


» more...

Return Value

  • An iterator to the inserted segment.
  • An iterator to the first element inserted, or before if init.size() == 0.
  • An iterator to the first segment inserted, or before if init.empty().

Parameters

Name Description
before An iterator before which the segment is inserted. This may be equal to end().
s The segment to insert.
init The list of segments to insert.
first The beginning of the range of segments to insert.
last The end of the range of segments to insert.
Insert segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
insert(
    iterator before,
    core::string_view s);


Description

This function inserts a segment before the specified position. Reserved characters in the segment are automatically escaped.

All iterators that are equal to before or come after are invalidated.

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the inserted segment.

Parameters

Name Description
before An iterator before which the segment is inserted. This may be equal to end().
s The segment to insert.
Insert segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
insert(
    iterator before,
    std::initializer_list<core::string_view> init);


Description

This function inserts the segments in an initializer list before the specified position. Reserved characters in the list are percent-escaped in the result.

All iterators that are equal to before or come after are invalidated.

NOTE

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

Example

url u( "/file.txt" ); u.segments().insert( u.segments().begin(), { "path", "to" } );

Complexity

Linear in init.size() + this->url().encoded_resource().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first element inserted, or before if init.size() == 0.

Parameters

Name Description
before An iterator before which the list is inserted. This may be equal to end().
init The list of segments to insert.
Insert segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
template<class FwdIt>
iterator
insert(
    iterator before,
    FwdIt first,
    FwdIt last);


Description

This function inserts the segments in a range before the specified position. Reserved characters in the list are automatically escaped.

All iterators that are equal to before or come after are invalidated.

NOTE

None of the character buffers referenced by the range may overlap the character buffer of the underlying url, or else the behavior is undefined.

Mandates

std::is_convertible< std::iterator_traits< FwdIt >::reference_type, core::string_view >::value == true

Complexity

Linear in std::distance( first, last ) + this->url().encoded_resource().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first segment inserted, or before if init.empty().

Parameters

Name Description
before An iterator before which the range is inserted. This may be equal to end().
first The beginning of the range of segments to insert.
last The end of the range of segments to insert.
Remove the last segment

Synopsis

Declared in <boost/url/segments_ref.hpp>
void
pop_back() noexcept;


Description

This function removes the last segment from the container.

Iterators to the last segment as well as all end iterators are invalidated.

Preconditions

not this->empty()

Exception Safety

Throws nothing.

Append a segment

Synopsis

Declared in <boost/url/segments_ref.hpp>
void
push_back(core::string_view s);


Description

This function appends a segment to the end of the path. Reserved characters in the string are automatically escaped.

All end iterators are invalidated.

Postconditions

this->back() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

Parameters

Name Description
s The segment to append.
Replace segments

Synopses

Declared in <boost/url/segments_ref.hpp>
Replace segments
iterator
replace(
    iterator pos,
    core::string_view s);


» more... Replace segments
iterator
replace(
    iterator from,
    iterator to,
    core::string_view s);


» more... Replace segments
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<core::string_view> init);


» more... Replace segments
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


» more...

Return Value

  • An iterator to the replaced segment.
  • An iterator to the new segment.
  • An iterator to the first segment inserted, or one past to if init.size() == 0.

Parameters

Name Description
pos An iterator to the segment.
s The string to assign.
from The beginning of the range of segments to replace.
to The end of the range of segments to replace.
init The list of segments to assign.
first The beginning of the range of segments to assign.
last The end of the range of segments to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
replace(
    iterator pos,
    core::string_view s);


Description

This function replaces the segment at the specified position. Reserved characters in the string are automatically escaped.

All iterators that are equal to pos or come after are invalidated.

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the replaced segment.

Parameters

Name Description
pos An iterator to the segment.
s The string to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
replace(
    iterator from,
    iterator to,
    core::string_view s);


Description

This function replaces a range of segments with one segment. Reserved characters in the string are automatically escaped.

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

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the new segment.

Parameters

Name Description
from The beginning of the range of segments to replace.
to The end of the range of segments to replace.
s The string to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
iterator
replace(
    iterator from,
    iterator to,
    std::initializer_list<core::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.

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

Preconditions

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

Complexity

Linear in init.size() + this->url().encoded_resouce().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first segment inserted, or one past to if init.size() == 0.

Parameters

Name Description
from The beginning of the range of segments to replace.
to The end of the range of segments to replace.
init The list of segments to assign.
Replace segments

Synopsis

Declared in <boost/url/segments_ref.hpp>
template<class FwdIt>
iterator
replace(
    iterator from,
    iterator to,
    FwdIt first,
    FwdIt last);


Description

This function replaces a range of segments with annother range of segments. Reserved characters in the new range are automatically escaped.

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

Preconditions

None of the character buffers referenced by the new range may overlap the character buffer of the underlying url, or else the behavior is undefined.

Complexity

Linear in std::distance( first, last ) + this->url().encoded_resouce().size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

An iterator to the first segment inserted, or one past to if init.size() == 0.

Parameters

Name Description
from The beginning of the range of segments to replace.
to The end of the range of segments to replace.
first The beginning of the range of segments to assign.
last The end of the range of segments to assign.
Return the referenced url

Synopsis

Declared in <boost/url/segments_ref.hpp>
url_base&
url() const noexcept;


Description

This function returns the url referenced by the view.

Example

url u( "/path/to/file.txt" ); assert( &u.segments().url() == &u );

Exception Safety

Throws nothing.

Return Value

A reference to the url.
Conversion

Synopsis

Declared in <boost/url/segments_ref.hpp>
operator segments_view() const noexcept;


Return Value

A view of the segments.

See Also

segments_view.

A view representing path segments in a URL

Synopsis

Declared in <boost/url/segments_view.hpp>
class segments_view
    : public segments_base


Base Classes

Name Description
segments_baseCommon functionality for containers

Types

Name Description
iterator A Bidirectional iterator to a path segment
const_iterator A Bidirectional iterator to a path segment
const_reference The reference type
difference_type A signed integer type used to represent differences.
reference The reference type
size_type An unsigned integer type used to represent size.
value_type The value type

Member Functions

Name Description
segments_view [constructor]Constructor
operator= Assignment
back Return the last segment
begin Return an iterator to the beginning
buffer Return the referenced character buffer.
empty Return true if there are no segments
end Return an iterator to the end
front Return the first segment
is_absolute Returns true if this references an absolute path.
size Return the number of segments

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Friends

|===
Name Description
segments_ref A view representing path segments in a URL
segments_encoded_view A view representing path segments in a URL
url_view_base Common functionality for containers

Description

Objects of this type are used to interpret the path as a bidirectional view of segment strings.

The view does not retain ownership of the elements and instead references the original character buffer. The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

url_view u( "/path/to/file.txt" ); segments_view ps = u.segments(); assert( ps.buffer().data() == u.buffer().data() );

Percent escapes in strings returned when dereferencing iterators are automatically decoded.

Iterator Invalidation

Changes to the underlying character buffer can invalidate iterators which reference it.

See Also

segments_encoded_view, segments_encoded_ref, segments_ref.

Constructor

Synopses

Declared in <boost/url/segments_view.hpp>
Constructor
constexpr
segments_view() = default;


» more... Constructor
constexpr
segments_view(segments_view const& other) = default;


» more... Constructor
segments_view(core::string_view s);


» more...

Exceptions

Name Thrown on
system_error s contains an invalid path.

Parameters

Name Description
other The other view.
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/segments_view.hpp>
constexpr
segments_view() = default;


Description

Default-constructed segments have zero elements.

Example

segments_view ps;

Effects

return segments_view( "" );

Complexity

Constant.

Exception Safety

Throws nothing.

Constructor

Synopsis

Declared in <boost/url/segments_view.hpp>
constexpr
segments_view(segments_view const& other) = default;


Description

After construction, viewss reference the same underlying character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Parameters

Name Description
other The other view.
Constructor

Synopsis

Declared in <boost/url/segments_view.hpp>
segments_view(core::string_view s);


Description

This function constructs segments from a valid path string, which can contain percent escapes. Upon construction, the view references the character buffer pointed to by s. caller is responsible for ensuring that the lifetime of the buffer extends until the view is destroyed.

Example

segments_view ps( "/path/to/file.txt" );

Effects

return parse_path( s ).value();

Postconditions

this->buffer().data() == s.data()

Complexity

Linear in s.

Exception Safety

Exceptions thrown on invalid input.

BNF

path = [ "/" ] [ segment *( "/" segment ) ] segment = *pchar

Specification

Exceptions

Name Thrown on
system_error s contains an invalid path.

Parameters

Name Description
s The string to parse.
Assignment

Synopsis

Declared in <boost/url/segments_view.hpp>
constexpr
segments_view&
operator=(segments_view const& other) = default;


Description

After assignment, both views reference the same underlying character buffer.

Ownership is not transferred; the caller is responsible for ensuring the lifetime of the buffer extends until it is no longer referenced.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant

Exception Safety

Throws nothing

Return Value

A reference to this object.

Parameters

Name Description
other The other view.
A modifiable container for a URL.

Synopsis

Declared in <boost/url/static_url.hpp>
template<std::size_t Capacity>
class static_url
    : public static_url_base


Base Classes

Name Description
static_url_baseCommon implementation for all static URLs

Member Functions

Name Description
static_url [constructor]Constructor
~static_url [destructor] [virtual]Destructor
operator= Assignment
authority Return the authority
buffer Return the url string
c_str Return the url as a null-terminated string
capacity Return the number of characters that can be stored without reallocating
clear Clear the contents while preserving the capacity
compare Return the result of comparing this with another url
data Return a pointer to the url's character buffer
empty Return true if the url is empty
encoded_authority Return the authority.
encoded_fragment Return the fragment
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_origin Return the origin
encoded_params Return the query as a container of parameters
encoded_password Return the password
encoded_path Return the path
encoded_query Return the query
encoded_resource Return the resource
encoded_segments Return the path as a container of segments
encoded_target Return the target
encoded_user Return the user
encoded_userinfo Return the userinfo
encoded_zone_id Return the IPv6 Zone ID
fragment Return the fragment
has_authority Return true if an authority is present
has_fragment Return true if a fragment is present
has_password Return true if a password is present
has_port Return true if a port is present
has_query Return true if a query is present
has_scheme Return true a scheme is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
is_path_absolute Return true if the path is absolute
normalize Normalize the URL components
normalize_authority Normalize the URL authority
normalize_fragment Normalize the URL fragment
normalize_path Normalize the URL path
normalize_query Normalize the URL query
normalize_scheme Normalize the URL scheme
params Return the query as a container of parameters
password Return the password
path Return the path
persist Return a shared, persistent copy of the url
port Return the port
port_number Return the port
query Return the query
remove_authority Remove the authority
remove_fragment Remove the fragment
remove_origin Remove the origin component
remove_password Remove the password
remove_port Remove the port
remove_query Remove the query
remove_scheme Remove the scheme
remove_userinfo Remove the userinfo
reserve Adjust the capacity without changing the size
resolve Resolve a URL reference against this base URL
scheme Return the scheme
scheme_id Return the scheme
segments Return the path as a container of segments
set_encoded_authority Set the authority
set_encoded_fragment Set the fragment.
set_encoded_host Set the host
set_encoded_host_address Set the host to an address
set_encoded_host_name Set the host to a name
set_encoded_params Set the query params
set_encoded_password Set the password.
set_encoded_path Set the path.
set_encoded_query Set the query
set_encoded_user Set the user
set_encoded_userinfo Set the userinfo.
set_encoded_zone_id Set the zone ID for an IPv6 address (percent-encoded).
set_fragment Set the fragment.
set_host Set the host
set_host_address Set the host to an address
set_host_ipv4 Set the host to an address
set_host_ipv6 Set the host to an address
set_host_ipvfuture Set the host to an address
set_host_name Set the host to a name
set_params Set the query params
set_password Set the password.
set_path Set the path.
set_path_absolute Set if the path is absolute
set_port Set the port
set_port_number Set the port
set_query Set the query
set_scheme Set the scheme
set_scheme_id Set the scheme
set_user Set the user
set_userinfo Set the userinfo
set_zone_id Set the zone ID for an IPv6 address.
size Return the number of characters in the url
user Return the user
userinfo Return the userinfo
zone_id Return the IPv6 Zone ID
operator core::string_view Return the URL as a core::string_view

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Protected Member Functions

Name Description
digest Calculate a hash of the url

Friends

|===
Name Description
hash

Non-Member Functions

Name Description
format_toFormat arguments into a URL
format_toFormat arguments into a URL
operator!=Return the result of comparing two URLs
operator<Return the result of comparing two URLs
operator<=Return the result of comparing two URLs
operator==Return the result of comparing two URLs
operator>Return the result of comparing two URLs
operator>=Return the result of comparing two URLs
resolveResolve a URL reference against a base URL

Description

This container owns a url, represented by an inline, null-terminated character buffer with fixed capacity. The contents may be inspected and modified, and the implementation maintains a useful invariant: changes to the url always leave it in a valid state.

Example

static_url< 1024 > u( "https://www.example.com" );

Invariants

this->capacity() == Capacity + 1

Template Parameters

Name Description
Capacity The maximum capacity in characters, not including the null terminator.

See Also

url, url_view.

Constructor

Synopses

Declared in <boost/url/static_url.hpp>
Constructor
static_url() noexcept;


» more... Constructor
static_url(static_url const& u) noexcept;


» more... Constructor
explicit
static_url(core::string_view s);


» more... Constructor
static_url(url_view_base const& u);


» more...

Exceptions

Name Thrown on
system_error The input does not contain a valid url.

Parameters

Name Description
u The url to copy.
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/static_url.hpp>
static_url() noexcept;


Description

Default constructed urls contain a zero-length string. This matches the grammar for a relative-ref with an empty path and no query or fragment.

Example

static_url< 1024 > u;

Postconditions

this->empty() == true

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Constructor

Synopsis

Declared in <boost/url/static_url.hpp>
static_url(static_url const& u) noexcept;


Description

The newly constructed object contains a copy of u.

Postconditions

this->buffer() == u.buffer() && this->buffer.data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Throws nothing.

Parameters

Name Description
u The url to copy.
Constructor

Synopsis

Declared in <boost/url/static_url.hpp>
explicit
static_url(core::string_view s);


Description

This function constructs a url from the string s, which must contain a valid URI or relative-ref or else an exception is thrown. The new url retains ownership by making a copy of the passed string.

Example

static_url< 1024 > u( "https://www.example.com" );

Effects

return static_url( parse_uri_reference( s ).value() );

Postconditions

this->buffer().data() != s.data()

Complexity

Linear in s.size().

Exception Safety

Exceptions thrown on invalid input.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Exceptions

Name Thrown on
system_error The input does not contain a valid url.

Parameters

Name Description
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/static_url.hpp>
static_url(url_view_base const& u);


Description

The newly constructed object contains a copy of u.

Postconditions

this->buffer() == u.buffer() && this->buffer.data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Exception thrown if capacity exceeded.

Exceptions

Name Thrown on
system_error Capacity would be exceeded.

Parameters

Name Description
u The url to copy.
Destructor

Synopsis

Declared in <boost/url/static_url.hpp>
virtual
~static_url() = default;


Description

Any params, segments, iterators, or views which reference this object are invalidated. The underlying character buffer is destroyed, invalidating all references to it.

Assignment

Synopses

Declared in <boost/url/static_url.hpp>
Assignment
static_url&
operator=(static_url const& u) noexcept;


» more... Assignment
static_url&
operator=(url_view_base const& u);


» more...

Exceptions

Name Thrown on
system_error Capacity would be exceeded.

Return Value

A reference to this object.

Parameters

Name Description
u The url to copy.
Assignment

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
operator=(static_url const& u) noexcept;


Description

The contents of u are copied and the previous contents of this are discarded. Capacity remains unchanged.

Postconditions

this->buffer() == u.buffer() && this->buffer().data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Throws nothing.

Return Value

A reference to this object.

Parameters

Name Description
u The url to copy.
Assignment

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
operator=(url_view_base const& u);


Description

The contents of u are copied and the previous contents of this are discarded.

Postconditions

this->buffer() == u.buffer() && this->buffer().data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Strong guarantee. Exception thrown if capacity exceeded.

Exceptions

Name Thrown on
system_error Capacity would be exceeded.

Return Value

A reference to this object.

Parameters

Name Description
u The url to copy.
Normalize the URL components

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
normalize();


Description

Applies Syntax-based normalization to all components of the URL.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL authority

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
normalize_authority();


Description

Applies Syntax-based normalization to the URL authority.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL fragment

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
normalize_fragment();


Description

Applies Syntax-based normalization to the URL fragment.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL path

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
normalize_path();


Description

Applies Syntax-based normalization to the URL path.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded. Redundant path-segments are removed.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL query

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
normalize_query();


Description

Applies Syntax-based normalization to the URL query.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL scheme

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
normalize_scheme();


Description

Applies Syntax-based normalization to the URL scheme.

The scheme is normalized to lowercase.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Remove the authority

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_authority();


Description

This function removes the authority, which includes the userinfo, host, and a port if present.

Example

assert( url( "http://example.com/echo.cgi" ).remove_authority().buffer() == "http:/echo.cgi" );

Postconditions

this->has_authority() == false && this->has_userinfo() == false && this->has_port() == false

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Return Value

*this

See Also

set_encoded_authority.

Remove the fragment

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_fragment() noexcept;


Description

This function removes the fragment. An empty fragment is distinct from having no fragment.

Example

assert( url( "?first=john&last=doe#anchor" ).remove_fragment().buffer() == "?first=john&last=doe" );

Postconditions

this->has_fragment() == false && this->encoded_fragment() == ""

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

See Also

remove_fragment, set_encoded_fragment, set_fragment.

Remove the origin component

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_origin();


Description

This function removes the origin, which consists of the scheme and authority.

Example

assert( url( "http://www.example.com/index.htm" ).remove_origin().buffer() == "/index.htm" );

Postconditions

this->scheme_id() == scheme::none && this->has_authority() == false

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

Return Value

*this
Remove the password

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_password() noexcept;


Description

This function removes the password from the userinfo if a password exists. If there is no userinfo or no authority, the call has no effect.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://user:pass@example.com" ).remove_password().authority().buffer() == "user@example.com" );

Postconditions

this->has_password() == false && this->encoded_password().empty() == true

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

See Also

set_encoded_password, set_encoded_user, set_password, set_user.

Remove the port

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_port() noexcept;


Description

If a port exists, it is removed. The rest of the authority is unchanged.

Example

assert( url( "http://www.example.com:80" ).remove_port().authority().buffer() == "www.example.com" );

Postconditions

this->has_port() == false && this->port_number() == 0 && this->port() == ""

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

*this

See Also

set_port.

Remove the query

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_query() noexcept;


Description

If a query is present, it is removed. An empty query is distinct from having no query.

Example

assert( url( "http://www.example.com?id=42" ).remove_query().buffer() == "http://www.example.com" );

Postconditions

this->has_query() == false && this->params().empty()

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

See Also

encoded_params, params, set_encoded_query, set_query.

Remove the scheme

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_scheme();


Description

This function removes the scheme if it is present.

Example

assert( url("http://www.example.com/index.htm" ).remove_scheme().buffer() == "//www.example.com/index.htm" );

Postconditions

this->has_scheme() == false && this->scheme_id() == scheme::none

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Specification

Return Value

*this

See Also

set_scheme.

Remove the userinfo

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
remove_userinfo() noexcept;


Description

This function removes the userinfo if present, without removing any authority.

Example

assert( url( "http://user@example.com" ).remove_userinfo().has_userinfo() == false );

Postconditions

this->has_userinfo() == false && this->encoded_userinfo().empty == true

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

See Also

set_encoded_userinfo, set_userinfo.

Set the authority

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_authority(pct_string_view s);


Description

This function sets the authority to the specified string. The string may contain percent-escapes.

Example

assert( url().set_encoded_authority( "My%20Computer" ).has_authority() );

Exception Safety

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

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
s The authority string to set.

See Also

remove_authority.

Set the fragment.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_fragment(pct_string_view s);


Description

This function sets the fragment to the specified string, which may contain percent-escapes and which may be empty. An empty fragment is distinct from having no fragment. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url("?first=john&last=doe" ).set_encoded_fragment( "john%2Ddoe" ).fragment() == "john-doe" );

Postconditions

this->has_fragment() == true && this->fragment() == decode_view( s )

Complexity

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

Exception Safety

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

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_fragment, set_fragment.

Set the host

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
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.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

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.

Set the host to an address

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_host_address(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, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture, 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.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to a name

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_host_name(pct_string_view s);


Description

The host is set to the specified string, which may contain percent-escapes and 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.

Example

assert( url( "http://www.example.com/index.htm").set_encoded_host_name( "localhost" ).host_address() == "localhost" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::name

Exception Safety

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

BNF

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

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the password.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_password(pct_string_view s);


Description

This function sets the password in the userinfo to the string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url("http://user@example.com").set_encoded_password( "pass" ).encoded_userinfo() == "user:pass" );

Postconditions

this->has_password() == true

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set. This string may contain any characters, including nulls.

See Also

remove_password, set_encoded_password, set_encoded_user, set_user.

Set the path.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_path(pct_string_view s);


Description

This function sets the path to the string, which may contain percent-escapes and can be empty. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

NOTE

The library may adjust the final result to ensure that no other parts of the url is semantically affected.

Example

url u( "http://www.example.com" ); u.set_encoded_path( "path/to/file.txt" ); assert( u.encoded_path() == "/path/to/file.txt" );

Complexity

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

Exception Safety

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

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_segments, segments, set_path, set_path_absolute.

Set the query

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_query(pct_string_view s);


Description

This sets the query to the string, which may contain percent-escapes and can be empty. An empty query is distinct from having no query. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_encoded_query( "id=42" ).encoded_query() == "id=42" );

Postconditions

this->has_query() == true && this->query() == decode_view( s );

Exception Safety

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

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_params, params, remove_query, set_query.

Set the user

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_user(pct_string_view s);


Description

This function sets the user part of the userinfo the the string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url().set_encoded_user("john%20doe").userinfo() == "john doe" );

Postconditions

this->has_authority() == true && this->has_userinfo() == true

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_password, set_encoded_password, set_password, set_user.

Set the userinfo.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_userinfo(pct_string_view s);


Description

The userinfo is set to the given string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result. The effects on the user and password depend on the presence of a colon (':') in the string:

  • If an unescaped colon exists, the characters up to the colon become the user and the rest of the characters after the colon become the password. In this case has_password returns true. Otherwise,
  • If there is no colon, the user is set to the string. The function has_password returns false.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://example.com" ).set_encoded_userinfo( "john%20doe" ).user() == "john doe" );

Complexity

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

Exception Safety

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

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_userinfo, set_userinfo.

Set the zone ID for an IPv6 address (percent-encoded).

Synopses

Declared in <boost/url/url_base.hpp>
Set the zone ID for an IPv6 address (percent-encoded).
url_base&
set_encoded_zone_id(pct_string_view s);


» more... Set the zone ID for an IPv6 address (percent-encoded).
static_url&
set_encoded_zone_id(pct_string_view const& s);


» more...

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the zone ID for an IPv6 address (percent-encoded).

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_zone_id(pct_string_view s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_encoded_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the zone ID for an IPv6 address (percent-encoded).

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_encoded_zone_id(pct_string_view const& s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_encoded_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the fragment.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_fragment(core::string_view s);


Description

This function sets the fragment to the specified string, which may be empty. An empty fragment is distinct from having no fragment. Reserved characters in the string are percent-escaped in the result.

Example

assert( url("?first=john&last=doe" ).set_encoded_fragment( "john doe" ).encoded_fragment() == "john%20doe" );

Postconditions

this->has_fragment() == true && this->fragment() == s

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_fragment, set_encoded_fragment.

Set the host

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_host(core::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, which may be empty. 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.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_host_address(core::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, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture, then the host is set to that address. The host type is host_type::ipvfuture.
  • Otherwise, the host name is set to the string, which may be empty. 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_address( "127.0.0.1" ).buffer() == "http://127.0.0.1" );

Postconditions

this->has_authority() == true

Complexity

Linear in s.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

set_encoded_host, 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.

Set the host to an address

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_host_ipv4(ipv4_address const& addr);


Description

The host is set to the specified IPv4 address. The host type is host_type::ipv4.

Example

assert( url("http://www.example.com").set_host_ipv4( ipv4_address( "127.0.0.1" ) ).buffer() == "http://127.0.0.1" );

Complexity

Linear in this->size().

Postconditions

this->has_authority() == true && this->host_ipv4_address() == addr && this->host_type() == host_type::ipv4

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

Return Value

*this

Parameters

Name Description
addr The address to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_host_ipv6(ipv6_address const& addr);


Description

The host is set to the specified IPv6 address. The host type is host_type::ipv6.

Example

assert( url().set_host_ipv6( ipv6_address( "1::6:c0a8:1" ) ).authority().buffer() == "[1::6:c0a8:1]" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::ipv6

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

Return Value

*this

Parameters

Name Description
addr The address to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_host_ipvfuture(core::string_view s);


Description

The host is set to the specified IPvFuture string. The host type is host_type::ipvfuture.

Example

assert( url().set_host_ipvfuture( "v42.bis" ).buffer() == "//[v42.bis]" );

Complexity

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

Postconditions

this->has_authority() == true && this->host_ipvfuture) == s && this->host_type() == host_type::ipvfuture

Exception Safety

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

BNF

IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to a name

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_host_name(core::string_view s);


Description

The host is set to the specified string, which may be empty. Reserved characters in the string are percent-escaped in the result. The host type is host_type::name.

Example

assert( url( "http://www.example.com/index.htm").set_host_name( "localhost" ).host_address() == "localhost" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::name

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

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

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the query params

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_params(
    std::initializer_list<param_view> ps,
    encoding_opts opts = {});


Description

This sets the query params to the list of param_view, which can be empty.

An empty list of params is distinct from having no params.

Reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_params( {"id", "42"} ).query() == "id=42" );

Postconditions

this->has_query() == true

Exception Safety

Strong guarantee. Calls to allocate may throw.

Complexity

Linear.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
ps The params to set.
opts The options for encoding.

See Also

encoded_params, remove_query, set_encoded_query, set_query.

Set the password.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_password(core::string_view s);


Description

This function sets the password in the userinfo to the string. Reserved characters in the string are percent-escaped in the result.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url("http://user@example.com").set_password( "pass" ).encoded_userinfo() == "user:pass" );

Postconditions

this->has_password() == true && this->password() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set. This string may contain any characters, including nulls.

See Also

remove_password, set_encoded_password, set_encoded_user, set_user.

Set the path.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_path(core::string_view s);


Description

This function sets the path to the string, which may be empty. Reserved characters in the string are percent-escaped in the result.

NOTE

The library may adjust the final result to ensure that no other parts of the URL are semantically affected.

NOTE

This function does not encode '/' chars, which are unreserved for paths but reserved for path segments. If a path segment should include encoded '/'s to differentiate it from path separators, the functions set_encoded_path or segments should be used instead.

Example

url u( "http://www.example.com" ); u.set_path( "path/to/file.txt" ); assert( u.path() == "/path/to/file.txt" );

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_segments, segments, set_encoded_path, set_path_absolute.

Set the port

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_port(core::string_view s);


Description

This port is set to the string, which must contain only digits or be empty. An empty port string is distinct from having no port.

Example

assert( url( "http://www.example.com" ).set_port( "8080" ).authority().buffer() == "www.example.com:8080" );

Postconditions

this->has_port() == true && this->port_number() == n && this->port() == std::to_string(n)

Exception Safety

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

BNF

port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
s The port string to set.

See Also

remove_port, set_port.

Set the port

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_port_number(uint16_t n);


Description

The port is set to the specified integer.

Example

assert( url( "http://www.example.com" ).set_port_number( 8080 ).authority().buffer() == "www.example.com:8080" );

Postconditions

this->has_authority() == true && this->has_port() == true && this->port_number() == n

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
n The port number to set.

See Also

remove_port, set_port.

Set the query

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_query(core::string_view s);


Description

This sets the query to the string, which can be empty. An empty query is distinct from having no query. Reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_query( "id=42" ).query() == "id=42" );

Postconditions

this->has_query() == true && this->query() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_params, params, remove_query, set_encoded_query.

Set the scheme

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_scheme(core::string_view s);


Description

The scheme is set to the specified string, which must contain a valid scheme without any trailing colon (':'). Note that schemes are case-insensitive, and the canonical form is lowercased.

Example

assert( url( "http://www.example.com" ).set_scheme( "https" ).scheme_id() == scheme::https );

Complexity

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

Exception Safety

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

BNF

scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Specification

Return Value

*this

Parameters

Name Description
s The scheme to set.

See Also

remove_scheme.

Set the scheme

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_scheme_id(urls::scheme id);


Description

This function sets the scheme to the specified known urls::scheme id, which may not be scheme::unknown or else an exception is thrown. If the id is scheme::none, this function behaves as if remove_scheme were called.

Example

assert( url( "http://example.com/echo.cgi" ).set_scheme_id( scheme::wss ).buffer() == "wss://example.com/echo.cgi" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Return Value

*this

Parameters

Name Description
id The scheme to set.
Set the user

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_user(core::string_view s);


Description

This function sets the user part of the userinfo to the string. Any special or reserved characters in the string are automatically percent-encoded.

Example

assert( url().set_user("john doe").encoded_userinfo() == "john%20doe" );

Postconditions

this->has_authority() == true && this->has_userinfo() == true

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_password, set_encoded_password, set_encoded_user, set_password.

Set the userinfo

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_userinfo(core::string_view s);


Description

The userinfo is set to the given string, which may contain percent-escapes. Any special or reserved characters in the string are automatically percent-encoded. The effects on the user and password depend on the presence of a colon (':') in the string:

  • If an unescaped colon exists, the characters up to the colon become the user and the rest of the characters after the colon become the password. In this case has_password returns true. Otherwise,
  • If there is no colon, the user is set to the string. The function has_password returns false.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://example.com" ).set_userinfo( "user:pass" ).encoded_user() == "user" );

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_userinfo, set_encoded_userinfo.

Set the zone ID for an IPv6 address.

Synopsis

Declared in <boost/url/static_url.hpp>
static_url&
set_zone_id(core::string_view s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Common implementation for all static URLs

Synopsis

Declared in <boost/url/static_url.hpp>
class static_url_base
    : public url_base


Base Classes

Name Description
url_baseCommon functionality for containers

Member Functions

Name Description
authority Return the authority
buffer Return the url string
c_str Return the url as a null-terminated string
capacity Return the number of characters that can be stored without reallocating
clear Clear the contents while preserving the capacity
compare Return the result of comparing this with another url
data Return a pointer to the url's character buffer
empty Return true if the url is empty
encoded_authority Return the authority.
encoded_fragment Return the fragment
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_origin Return the origin
encoded_params Return the query as a container of parameters
encoded_password Return the password
encoded_path Return the path
encoded_query Return the query
encoded_resource Return the resource
encoded_segments Return the path as a container of segments
encoded_target Return the target
encoded_user Return the user
encoded_userinfo Return the userinfo
encoded_zone_id Return the IPv6 Zone ID
fragment Return the fragment
has_authority Return true if an authority is present
has_fragment Return true if a fragment is present
has_password Return true if a password is present
has_port Return true if a port is present
has_query Return true if a query is present
has_scheme Return true a scheme is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
is_path_absolute Return true if the path is absolute
normalize Normalize the URL components
normalize_authority Normalize the URL authority
normalize_fragment Normalize the URL fragment
normalize_path Normalize the URL path
normalize_query Normalize the URL query
normalize_scheme Normalize the URL scheme
params Return the query as a container of parameters
password Return the password
path Return the path
persist Return a shared, persistent copy of the url
port Return the port
port_number Return the port
query Return the query
remove_authority Remove the authority
remove_fragment Remove the fragment
remove_origin Remove the origin component
remove_password Remove the password
remove_port Remove the port
remove_query Remove the query
remove_scheme Remove the scheme
remove_userinfo Remove the userinfo
reserve Adjust the capacity without changing the size
resolve Resolve a URL reference against this base URL
scheme Return the scheme
scheme_id Return the scheme
segments Return the path as a container of segments
set_encoded_authority Set the authority
set_encoded_fragment Set the fragment.
set_encoded_host Set the host
set_encoded_host_address Set the host to an address
set_encoded_host_name Set the host to a name
set_encoded_params Set the query params
set_encoded_password Set the password.
set_encoded_path Set the path.
set_encoded_query Set the query
set_encoded_user Set the user
set_encoded_userinfo Set the userinfo.
set_encoded_zone_id Set the zone ID for an IPv6 address (percent-encoded).
set_fragment Set the fragment.
set_host Set the host
set_host_address Set the host to an address
set_host_ipv4 Set the host to an address
set_host_ipv6 Set the host to an address
set_host_ipvfuture Set the host to an address
set_host_name Set the host to a name
set_params Set the query params
set_password Set the password.
set_path Set the path.
set_path_absolute Set if the path is absolute
set_port Set the port
set_port_number Set the port
set_query Set the query
set_scheme Set the scheme
set_scheme_id Set the scheme
set_user Set the user
set_userinfo Set the userinfo
set_zone_id Set the zone ID for an IPv6 address.
size Return the number of characters in the url
user Return the user
userinfo Return the userinfo
zone_id Return the IPv6 Zone ID
operator core::string_view Return the URL as a core::string_view

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Protected Member Functions

Name Description
digest Calculate a hash of the url

Friends

|===
Name Description
static_url A modifiable container for a URL.

Non-Member Functions

Name Description
format_toFormat arguments into a URL
format_toFormat arguments into a URL
operator!=Return the result of comparing two URLs
operator<Return the result of comparing two URLs
operator<=Return the result of comparing two URLs
operator==Return the result of comparing two URLs
operator>Return the result of comparing two URLs
operator>=Return the result of comparing two URLs
resolveResolve a URL reference against a base URL

Derived Classes

Name Description
static_url A modifiable container for a URL.

Description

This base class is used by the library to provide common functionality for static URLs. Users should not use this class directly. Instead, construct an instance of one of the containers or call a parsing function.

Containers

  • url
  • url_view
  • static_url

Parsing Functions

  • parse_absolute_uri
  • parse_origin_form
  • parse_relative_ref
  • parse_uri
  • parse_uri_reference
A modifiable container for a URL.

Synopsis

Declared in <boost/url/url.hpp>
class url
    : public url_base


Base Classes

Name Description
url_baseCommon functionality for containers

Member Functions

Name Description
url [constructor]Constructor
~url [destructor] [virtual]Destructor
operator= Assignment
authority Return the authority
buffer Return the url string
c_str Return the url as a null-terminated string
capacity Return the number of characters that can be stored without reallocating
clear Clear the contents while preserving the capacity
compare Return the result of comparing this with another url
data Return a pointer to the url's character buffer
empty Return true if the url is empty
encoded_authority Return the authority.
encoded_fragment Return the fragment
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_origin Return the origin
encoded_params Return the query as a container of parameters
encoded_password Return the password
encoded_path Return the path
encoded_query Return the query
encoded_resource Return the resource
encoded_segments Return the path as a container of segments
encoded_target Return the target
encoded_user Return the user
encoded_userinfo Return the userinfo
encoded_zone_id Return the IPv6 Zone ID
fragment Return the fragment
has_authority Return true if an authority is present
has_fragment Return true if a fragment is present
has_password Return true if a password is present
has_port Return true if a port is present
has_query Return true if a query is present
has_scheme Return true a scheme is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
is_path_absolute Return true if the path is absolute
normalize Normalize the URL components
normalize_authority Normalize the URL authority
normalize_fragment Normalize the URL fragment
normalize_path Normalize the URL path
normalize_query Normalize the URL query
normalize_scheme Normalize the URL scheme
params Return the query as a container of parameters
password Return the password
path Return the path
persist Return a shared, persistent copy of the url
port Return the port
port_number Return the port
query Return the query
remove_authority Remove the authority
remove_fragment Remove the fragment
remove_origin Remove the origin component
remove_password Remove the password
remove_port Remove the port
remove_query Remove the query
remove_scheme Remove the scheme
remove_userinfo Remove the userinfo
reserve Adjust the capacity without changing the size
resolve Resolve a URL reference against this base URL
scheme Return the scheme
scheme_id Return the scheme
segments Return the path as a container of segments
set_encoded_authority Set the authority
set_encoded_fragment Set the fragment.
set_encoded_host Set the host
set_encoded_host_address Set the host to an address
set_encoded_host_name Set the host to a name
set_encoded_params Set the query params
set_encoded_password Set the password.
set_encoded_path Set the path.
set_encoded_query Set the query
set_encoded_user Set the user
set_encoded_userinfo Set the userinfo.
set_encoded_zone_id Set the zone ID for an IPv6 address (percent-encoded).
set_fragment Set the fragment.
set_host Set the host
set_host_address Set the host to an address
set_host_ipv4 Set the host to an address
set_host_ipv6 Set the host to an address
set_host_ipvfuture Set the host to an address
set_host_name Set the host to a name
set_params Set the query params
set_password Set the password.
set_path Set the path.
set_path_absolute Set if the path is absolute
set_port Set the port
set_port_number Set the port
set_query Set the query
set_scheme Set the scheme
set_scheme_id Set the scheme
set_user Set the user
set_userinfo Set the userinfo
set_zone_id Set the zone ID for an IPv6 address.
size Return the number of characters in the url
swap Swap the contents.
user Return the user
userinfo Return the userinfo
zone_id Return the IPv6 Zone ID
operator core::string_view Return the URL as a core::string_view

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Protected Member Functions

Name Description
digest Calculate a hash of the url

Friends

|===
Name Description
swap Swap
std::hash<url>

Non-Member Functions

Name Description
formatFormat arguments into a URL
formatFormat arguments into a URL
format_toFormat arguments into a URL
format_toFormat arguments into a URL
operator!=Return the result of comparing two URLs
operator<Return the result of comparing two URLs
operator<=Return the result of comparing two URLs
operator==Return the result of comparing two URLs
operator>Return the result of comparing two URLs
operator>=Return the result of comparing two URLs
resolveResolve a URL reference against a base URL

Description

This container owns a url, represented by a null-terminated character buffer which is managed by performing dymamic memory allocations as needed. The contents may be inspected and modified, and the implementation maintains a useful invariant: changes to the url always leave it in a valid state.

Exception Safety

  • Functions marked noexcept provide the no-throw guarantee, otherwise:
  • Functions which throw offer the strong exception safety guarantee.

BNF

URI-reference = URI / relative-ref URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ] absolute-URI = scheme ":" hier-part [ "?" query ]

Specification

See Also

parse_absolute_uri, parse_relative_ref, parse_uri, parse_uri_reference, resolve.

Constructor

Synopses

Declared in <boost/url/url.hpp>
Constructor
url() noexcept;


» more... Constructor
url(url const& u);


» more... Constructor
url(url&& u) noexcept;


» more... Constructor
explicit
url(core::string_view s);


» more... Constructor
url(url_view_base const& u);


» more...

Exceptions

Name Thrown on
std::length_error u.size() > max_size().
system_error The input does not contain a valid url.

Parameters

Name Description
u The url to copy.
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/url.hpp>
url() noexcept;


Description

Default constructed urls contain a zero-length string. This matches the grammar for a relative-ref with an empty path and no query or fragment.

Example

url u;

Postconditions

this->empty() == true

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Constructor

Synopsis

Declared in <boost/url/url.hpp>
url(url const& u);


Description

The newly constructed object contains a copy of u.

Postconditions

this->buffer() == u.buffer() && this->buffer().data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Exceptions

Name Thrown on
std::length_error u.size() > max_size().

Parameters

Name Description
u The url to copy.
Constructor

Synopsis

Declared in <boost/url/url.hpp>
url(url&& u) noexcept;


Description

The contents of u are transferred to the newly constructed object, which includes the underlying character buffer. After construction, the moved-from object is as if default constructed.

Postconditions

u.empty() == true

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
u The url to move from.
Constructor

Synopsis

Declared in <boost/url/url.hpp>
explicit
url(core::string_view s);


Description

This function constructs a URL from the string s, which must contain a valid URI or relative-ref or else an exception is thrown. The new url retains ownership by allocating a copy of the passed string.

Example

url u( "https://www.example.com" );

Effects

return url( parse_uri_reference( s ).value() );

Postconditions

this->buffer().data() != s.data()

Complexity

Linear in s.size().

Exception Safety

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

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Exceptions

Name Thrown on
system_error The input does not contain a valid url.

Parameters

Name Description
s The string to parse.
Constructor

Synopsis

Declared in <boost/url/url.hpp>
url(url_view_base const& u);


Description

The newly constructed object contains a copy of u.

Postconditions

this->buffer() == u.buffer() && this->buffer().data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Exceptions

Name Thrown on
std::length_error u.size() > max_size().

Parameters

Name Description
u The url to copy.
Destructor

Synopsis

Declared in <boost/url/url.hpp>
virtual
~url();


Description

Any params, segments, iterators, or views which reference this object are invalidated. The underlying character buffer is destroyed, invalidating all references to it.

Assignment

Synopses

Declared in <boost/url/url.hpp>
Assignment
url&
operator=(url const& u);


» more... Assignment
url&
operator=(url&& u) noexcept;


» more... Assignment
url&
operator=(url_view_base const& u);


» more...

Exceptions

Name Thrown on
std::length_error u.size() > max_size().

Return Value

A reference to this object.

Parameters

Name Description
u The url to copy.
Assignment

Synopsis

Declared in <boost/url/url.hpp>
url&
operator=(url const& u);


Description

The contents of u are copied and the previous contents of this are destroyed. Capacity is preserved, or increases.

Postconditions

this->buffer() == u.buffer() && this->buffer().data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Return Value

A reference to this object.

Parameters

Name Description
u The url to copy.
Assignment

Synopsis

Declared in <boost/url/url.hpp>
url&
operator=(url&& u) noexcept;


Description

The contents of u are transferred to this, including the underlying character buffer. The previous contents of this are destroyed. After assignment, the moved-from object is as if default constructed.

Postconditions

u.empty() == true

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A reference to this object.

Parameters

Name Description
u The url to assign from.
Assignment

Synopsis

Declared in <boost/url/url.hpp>
url&
operator=(url_view_base const& u);


Description

The contents of u are copied and the previous contents of this are destroyed. Capacity is preserved, or increases.

Postconditions

this->buffer() == u.buffer() && this->buffer().data() != u.buffer().data()

Complexity

Linear in u.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Exceptions

Name Thrown on
std::length_error u.size() > max_size().

Return Value

A reference to this object.

Parameters

Name Description
u The url to copy.
Normalize the URL components

Synopsis

Declared in <boost/url/url.hpp>
url&
normalize();


Description

Applies Syntax-based normalization to all components of the URL.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL authority

Synopsis

Declared in <boost/url/url.hpp>
url&
normalize_authority();


Description

Applies Syntax-based normalization to the URL authority.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL fragment

Synopsis

Declared in <boost/url/url.hpp>
url&
normalize_fragment();


Description

Applies Syntax-based normalization to the URL fragment.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL path

Synopsis

Declared in <boost/url/url.hpp>
url&
normalize_path();


Description

Applies Syntax-based normalization to the URL path.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded. Redundant path-segments are removed.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL query

Synopsis

Declared in <boost/url/url.hpp>
url&
normalize_query();


Description

Applies Syntax-based normalization to the URL query.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL scheme

Synopsis

Declared in <boost/url/url.hpp>
url&
normalize_scheme();


Description

Applies Syntax-based normalization to the URL scheme.

The scheme is normalized to lowercase.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Remove the authority

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_authority();


Description

This function removes the authority, which includes the userinfo, host, and a port if present.

Example

assert( url( "http://example.com/echo.cgi" ).remove_authority().buffer() == "http:/echo.cgi" );

Postconditions

this->has_authority() == false && this->has_userinfo() == false && this->has_port() == false

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Return Value

*this

See Also

set_encoded_authority.

Remove the fragment

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_fragment() noexcept;


Description

This function removes the fragment. An empty fragment is distinct from having no fragment.

Example

assert( url( "?first=john&last=doe#anchor" ).remove_fragment().buffer() == "?first=john&last=doe" );

Postconditions

this->has_fragment() == false && this->encoded_fragment() == ""

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

See Also

remove_fragment, set_encoded_fragment, set_fragment.

Remove the origin component

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_origin();


Description

This function removes the origin, which consists of the scheme and authority.

Example

assert( url( "http://www.example.com/index.htm" ).remove_origin().buffer() == "/index.htm" );

Postconditions

this->scheme_id() == scheme::none && this->has_authority() == false

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

Return Value

*this
Remove the password

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_password() noexcept;


Description

This function removes the password from the userinfo if a password exists. If there is no userinfo or no authority, the call has no effect.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://user:pass@example.com" ).remove_password().authority().buffer() == "user@example.com" );

Postconditions

this->has_password() == false && this->encoded_password().empty() == true

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

See Also

set_encoded_password, set_encoded_user, set_password, set_user.

Remove the port

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_port() noexcept;


Description

If a port exists, it is removed. The rest of the authority is unchanged.

Example

assert( url( "http://www.example.com:80" ).remove_port().authority().buffer() == "www.example.com" );

Postconditions

this->has_port() == false && this->port_number() == 0 && this->port() == ""

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

*this

See Also

set_port.

Remove the query

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_query() noexcept;


Description

If a query is present, it is removed. An empty query is distinct from having no query.

Example

assert( url( "http://www.example.com?id=42" ).remove_query().buffer() == "http://www.example.com" );

Postconditions

this->has_query() == false && this->params().empty()

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

See Also

encoded_params, params, set_encoded_query, set_query.

Remove the scheme

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_scheme();


Description

This function removes the scheme if it is present.

Example

assert( url("http://www.example.com/index.htm" ).remove_scheme().buffer() == "//www.example.com/index.htm" );

Postconditions

this->has_scheme() == false && this->scheme_id() == scheme::none

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Specification

Return Value

*this

See Also

set_scheme.

Remove the userinfo

Synopsis

Declared in <boost/url/url.hpp>
url&
remove_userinfo() noexcept;


Description

This function removes the userinfo if present, without removing any authority.

Example

assert( url( "http://user@example.com" ).remove_userinfo().has_userinfo() == false );

Postconditions

this->has_userinfo() == false && this->encoded_userinfo().empty == true

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

See Also

set_encoded_userinfo, set_userinfo.

Set the authority

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_authority(pct_string_view s);


Description

This function sets the authority to the specified string. The string may contain percent-escapes.

Example

assert( url().set_encoded_authority( "My%20Computer" ).has_authority() );

Exception Safety

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

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
s The authority string to set.

See Also

remove_authority.

Set the fragment.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_fragment(pct_string_view s);


Description

This function sets the fragment to the specified string, which may contain percent-escapes and which may be empty. An empty fragment is distinct from having no fragment. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url("?first=john&last=doe" ).set_encoded_fragment( "john%2Ddoe" ).fragment() == "john-doe" );

Postconditions

this->has_fragment() == true && this->fragment() == decode_view( s )

Complexity

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

Exception Safety

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

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_fragment, set_fragment.

Set the host

Synopsis

Declared in <boost/url/url.hpp>
url&
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.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

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.

Set the host to an address

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_host_address(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, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture, 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.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to a name

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_host_name(pct_string_view s);


Description

The host is set to the specified string, which may contain percent-escapes and 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.

Example

assert( url( "http://www.example.com/index.htm").set_encoded_host_name( "localhost" ).host_address() == "localhost" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::name

Exception Safety

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

BNF

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

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the query params

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_params(std::initializer_list<param_pct_view> ps);


Description

This sets the query params to the elements in the list, which may contain percent-escapes and can be empty.

An empty list of params is distinct from having no query.

Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_encoded_params( {"id", "42"} ).encoded_query() == "id=42" );

Postconditions

this->has_query() == true

Complexity

Linear.

Exception Safety

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

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
ps The params to set.

See Also

set_params, params, remove_query, set_encoded_query, set_query.

Set the password.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_password(pct_string_view s);


Description

This function sets the password in the userinfo to the string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url("http://user@example.com").set_encoded_password( "pass" ).encoded_userinfo() == "user:pass" );

Postconditions

this->has_password() == true

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set. This string may contain any characters, including nulls.

See Also

remove_password, set_encoded_password, set_encoded_user, set_user.

Set the path.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_path(pct_string_view s);


Description

This function sets the path to the string, which may contain percent-escapes and can be empty. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

NOTE

The library may adjust the final result to ensure that no other parts of the url is semantically affected.

Example

url u( "http://www.example.com" ); u.set_encoded_path( "path/to/file.txt" ); assert( u.encoded_path() == "/path/to/file.txt" );

Complexity

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

Exception Safety

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

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_segments, segments, set_path, set_path_absolute.

Set the query

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_query(pct_string_view s);


Description

This sets the query to the string, which may contain percent-escapes and can be empty. An empty query is distinct from having no query. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_encoded_query( "id=42" ).encoded_query() == "id=42" );

Postconditions

this->has_query() == true && this->query() == decode_view( s );

Exception Safety

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

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_params, params, remove_query, set_query.

Set the user

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_user(pct_string_view s);


Description

This function sets the user part of the userinfo the the string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url().set_encoded_user("john%20doe").userinfo() == "john doe" );

Postconditions

this->has_authority() == true && this->has_userinfo() == true

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_password, set_encoded_password, set_password, set_user.

Set the userinfo.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_userinfo(pct_string_view s);


Description

The userinfo is set to the given string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result. The effects on the user and password depend on the presence of a colon (':') in the string:

  • If an unescaped colon exists, the characters up to the colon become the user and the rest of the characters after the colon become the password. In this case has_password returns true. Otherwise,
  • If there is no colon, the user is set to the string. The function has_password returns false.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://example.com" ).set_encoded_userinfo( "john%20doe" ).user() == "john doe" );

Complexity

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

Exception Safety

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

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_userinfo, set_userinfo.

Set the zone ID for an IPv6 address (percent-encoded).

Synopses

Declared in <boost/url/url_base.hpp>
Set the zone ID for an IPv6 address (percent-encoded).
url_base&
set_encoded_zone_id(pct_string_view s);


» more... Set the zone ID for an IPv6 address (percent-encoded).
url&
set_encoded_zone_id(pct_string_view const& s);


» more...

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the zone ID for an IPv6 address (percent-encoded).

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_zone_id(pct_string_view s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_encoded_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the zone ID for an IPv6 address (percent-encoded).

Synopsis

Declared in <boost/url/url.hpp>
url&
set_encoded_zone_id(pct_string_view const& s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_encoded_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the fragment.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_fragment(core::string_view s);


Description

This function sets the fragment to the specified string, which may be empty. An empty fragment is distinct from having no fragment. Reserved characters in the string are percent-escaped in the result.

Example

assert( url("?first=john&last=doe" ).set_encoded_fragment( "john doe" ).encoded_fragment() == "john%20doe" );

Postconditions

this->has_fragment() == true && this->fragment() == s

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_fragment, set_encoded_fragment.

Set the host

Synopsis

Declared in <boost/url/url.hpp>
url&
set_host(core::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, which may be empty. 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.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/url.hpp>
url&
set_host_address(core::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, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture, then the host is set to that address. The host type is host_type::ipvfuture.
  • Otherwise, the host name is set to the string, which may be empty. 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_address( "127.0.0.1" ).buffer() == "http://127.0.0.1" );

Postconditions

this->has_authority() == true

Complexity

Linear in s.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

set_encoded_host, 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.

Set the host to an address

Synopsis

Declared in <boost/url/url.hpp>
url&
set_host_ipv4(ipv4_address const& addr);


Description

The host is set to the specified IPv4 address. The host type is host_type::ipv4.

Example

assert( url("http://www.example.com").set_host_ipv4( ipv4_address( "127.0.0.1" ) ).buffer() == "http://127.0.0.1" );

Complexity

Linear in this->size().

Postconditions

this->has_authority() == true && this->host_ipv4_address() == addr && this->host_type() == host_type::ipv4

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

Return Value

*this

Parameters

Name Description
addr The address to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/url.hpp>
url&
set_host_ipv6(ipv6_address const& addr);


Description

The host is set to the specified IPv6 address. The host type is host_type::ipv6.

Example

assert( url().set_host_ipv6( ipv6_address( "1::6:c0a8:1" ) ).authority().buffer() == "[1::6:c0a8:1]" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::ipv6

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

Return Value

*this

Parameters

Name Description
addr The address to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/url.hpp>
url&
set_host_ipvfuture(core::string_view s);


Description

The host is set to the specified IPvFuture string. The host type is host_type::ipvfuture.

Example

assert( url().set_host_ipvfuture( "v42.bis" ).buffer() == "//[v42.bis]" );

Complexity

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

Postconditions

this->has_authority() == true && this->host_ipvfuture) == s && this->host_type() == host_type::ipvfuture

Exception Safety

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

BNF

IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to a name

Synopsis

Declared in <boost/url/url.hpp>
url&
set_host_name(core::string_view s);


Description

The host is set to the specified string, which may be empty. Reserved characters in the string are percent-escaped in the result. The host type is host_type::name.

Example

assert( url( "http://www.example.com/index.htm").set_host_name( "localhost" ).host_address() == "localhost" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::name

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

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

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the query params

Synopsis

Declared in <boost/url/url.hpp>
url&
set_params(
    std::initializer_list<param_view> ps,
    encoding_opts opts = {});


Description

This sets the query params to the list of param_view, which can be empty.

An empty list of params is distinct from having no params.

Reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_params( {"id", "42"} ).query() == "id=42" );

Postconditions

this->has_query() == true

Exception Safety

Strong guarantee. Calls to allocate may throw.

Complexity

Linear.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
ps The params to set.
opts The options for encoding.

See Also

encoded_params, remove_query, set_encoded_query, set_query.

Set the password.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_password(core::string_view s);


Description

This function sets the password in the userinfo to the string. Reserved characters in the string are percent-escaped in the result.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url("http://user@example.com").set_password( "pass" ).encoded_userinfo() == "user:pass" );

Postconditions

this->has_password() == true && this->password() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set. This string may contain any characters, including nulls.

See Also

remove_password, set_encoded_password, set_encoded_user, set_user.

Set the path.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_path(core::string_view s);


Description

This function sets the path to the string, which may be empty. Reserved characters in the string are percent-escaped in the result.

NOTE

The library may adjust the final result to ensure that no other parts of the URL are semantically affected.

NOTE

This function does not encode '/' chars, which are unreserved for paths but reserved for path segments. If a path segment should include encoded '/'s to differentiate it from path separators, the functions set_encoded_path or segments should be used instead.

Example

url u( "http://www.example.com" ); u.set_path( "path/to/file.txt" ); assert( u.path() == "/path/to/file.txt" );

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_segments, segments, set_encoded_path, set_path_absolute.

Set the port

Synopsis

Declared in <boost/url/url.hpp>
url&
set_port(core::string_view s);


Description

This port is set to the string, which must contain only digits or be empty. An empty port string is distinct from having no port.

Example

assert( url( "http://www.example.com" ).set_port( "8080" ).authority().buffer() == "www.example.com:8080" );

Postconditions

this->has_port() == true && this->port_number() == n && this->port() == std::to_string(n)

Exception Safety

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

BNF

port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
s The port string to set.

See Also

remove_port, set_port.

Set the port

Synopsis

Declared in <boost/url/url.hpp>
url&
set_port_number(uint16_t n);


Description

The port is set to the specified integer.

Example

assert( url( "http://www.example.com" ).set_port_number( 8080 ).authority().buffer() == "www.example.com:8080" );

Postconditions

this->has_authority() == true && this->has_port() == true && this->port_number() == n

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
n The port number to set.

See Also

remove_port, set_port.

Set the query

Synopsis

Declared in <boost/url/url.hpp>
url&
set_query(core::string_view s);


Description

This sets the query to the string, which can be empty. An empty query is distinct from having no query. Reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_query( "id=42" ).query() == "id=42" );

Postconditions

this->has_query() == true && this->query() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_params, params, remove_query, set_encoded_query.

Set the scheme

Synopsis

Declared in <boost/url/url.hpp>
url&
set_scheme(core::string_view s);


Description

The scheme is set to the specified string, which must contain a valid scheme without any trailing colon (':'). Note that schemes are case-insensitive, and the canonical form is lowercased.

Example

assert( url( "http://www.example.com" ).set_scheme( "https" ).scheme_id() == scheme::https );

Complexity

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

Exception Safety

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

BNF

scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Specification

Return Value

*this

Parameters

Name Description
s The scheme to set.

See Also

remove_scheme.

Set the scheme

Synopsis

Declared in <boost/url/url.hpp>
url&
set_scheme_id(urls::scheme id);


Description

This function sets the scheme to the specified known urls::scheme id, which may not be scheme::unknown or else an exception is thrown. If the id is scheme::none, this function behaves as if remove_scheme were called.

Example

assert( url( "http://example.com/echo.cgi" ).set_scheme_id( scheme::wss ).buffer() == "wss://example.com/echo.cgi" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Return Value

*this

Parameters

Name Description
id The scheme to set.
Set the user

Synopsis

Declared in <boost/url/url.hpp>
url&
set_user(core::string_view s);


Description

This function sets the user part of the userinfo to the string. Any special or reserved characters in the string are automatically percent-encoded.

Example

assert( url().set_user("john doe").encoded_userinfo() == "john%20doe" );

Postconditions

this->has_authority() == true && this->has_userinfo() == true

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_password, set_encoded_password, set_encoded_user, set_password.

Set the userinfo

Synopsis

Declared in <boost/url/url.hpp>
url&
set_userinfo(core::string_view s);


Description

The userinfo is set to the given string, which may contain percent-escapes. Any special or reserved characters in the string are automatically percent-encoded. The effects on the user and password depend on the presence of a colon (':') in the string:

  • If an unescaped colon exists, the characters up to the colon become the user and the rest of the characters after the colon become the password. In this case has_password returns true. Otherwise,
  • If there is no colon, the user is set to the string. The function has_password returns false.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://example.com" ).set_userinfo( "user:pass" ).encoded_user() == "user" );

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_userinfo, set_encoded_userinfo.

Set the zone ID for an IPv6 address.

Synopsis

Declared in <boost/url/url.hpp>
url&
set_zone_id(core::string_view s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Swap the contents.

Synopsis

Declared in <boost/url/url.hpp>
void
swap(url& other) noexcept;


Description

Exchanges the contents of this url with another url. All views, iterators and references remain valid.

If this == &other, this function call has no effect.

Example

url u1( "https://www.example.com" ); url u2( "https://www.boost.org" ); u1.swap(u2); assert(u1 == "https://www.boost.org" ); assert(u2 == "https://www.example.com" );

Complexity

Constant

Exception Safety

Throws nothing.

Parameters

Name Description
other The object to swap with
Common functionality for containers

Synopsis

Declared in <boost/url/url_base.hpp>
class url_base
    : public url_view_base


Base Classes

Name Description
url_view_baseCommon functionality for containers

Member Functions

Name Description
authority Return the authority
buffer Return the url string
c_str Return the url as a null-terminated string
capacity Return the number of characters that can be stored without reallocating
clear Clear the contents while preserving the capacity
compare Return the result of comparing this with another url
data Return a pointer to the url's character buffer
empty Return true if the url is empty
encoded_authority Return the authority.
encoded_fragment Return the fragment
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_origin Return the origin
encoded_params Return the query as a container of parameters
encoded_password Return the password
encoded_path Return the path
encoded_query Return the query
encoded_resource Return the resource
encoded_segments Return the path as a container of segments
encoded_target Return the target
encoded_user Return the user
encoded_userinfo Return the userinfo
encoded_zone_id Return the IPv6 Zone ID
fragment Return the fragment
has_authority Return true if an authority is present
has_fragment Return true if a fragment is present
has_password Return true if a password is present
has_port Return true if a port is present
has_query Return true if a query is present
has_scheme Return true a scheme is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
is_path_absolute Return true if the path is absolute
normalize Normalize the URL components
normalize_authority Normalize the URL authority
normalize_fragment Normalize the URL fragment
normalize_path Normalize the URL path
normalize_query Normalize the URL query
normalize_scheme Normalize the URL scheme
params Return the query as a container of parameters
password Return the password
path Return the path
persist Return a shared, persistent copy of the url
port Return the port
port_number Return the port
query Return the query
remove_authority Remove the authority
remove_fragment Remove the fragment
remove_origin Remove the origin component
remove_password Remove the password
remove_port Remove the port
remove_query Remove the query
remove_scheme Remove the scheme
remove_userinfo Remove the userinfo
reserve Adjust the capacity without changing the size
resolve Resolve a URL reference against this base URL
scheme Return the scheme
scheme_id Return the scheme
segments Return the path as a container of segments
set_encoded_authority Set the authority
set_encoded_fragment Set the fragment.
set_encoded_host Set the host
set_encoded_host_address Set the host to an address
set_encoded_host_name Set the host to a name
set_encoded_params Set the query params
set_encoded_password Set the password.
set_encoded_path Set the path.
set_encoded_query Set the query
set_encoded_user Set the user
set_encoded_userinfo Set the userinfo.
set_encoded_zone_id Set the zone ID for an IPv6 address (percent-encoded).
set_fragment Set the fragment.
set_host Set the host
set_host_address Set the host to an address
set_host_ipv4 Set the host to an address
set_host_ipv6 Set the host to an address
set_host_ipvfuture Set the host to an address
set_host_name Set the host to a name
set_params Set the query params
set_password Set the password.
set_path Set the path.
set_path_absolute Set if the path is absolute
set_port Set the port
set_port_number Set the port
set_query Set the query
set_scheme Set the scheme
set_scheme_id Set the scheme
set_user Set the user
set_userinfo Set the userinfo
set_zone_id Set the zone ID for an IPv6 address.
size Return the number of characters in the url
user Return the user
userinfo Return the userinfo
zone_id Return the IPv6 Zone ID
operator core::string_view Return the URL as a core::string_view

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Protected Member Functions

Name Description
digest Calculate a hash of the url

Friends

|===
Name Description
resolve Resolve a URL reference against a base URL
params_encoded_ref A view representing query parameters in a URL
segments_encoded_ref A view representing path segments in a URL
segments_ref A view representing path segments in a URL
params_ref A view representing query parameters in a URL
static_url_base Common implementation for all static URLs
url A modifiable container for a URL.

Non-Member Functions

Name Description
format_toFormat arguments into a URL
format_toFormat arguments into a URL
operator!=Return the result of comparing two URLs
operator<Return the result of comparing two URLs
operator<=Return the result of comparing two URLs
operator==Return the result of comparing two URLs
operator>Return the result of comparing two URLs
operator>=Return the result of comparing two URLs

Derived Classes

Name Description
static_url_base Common implementation for all static URLs
url A modifiable container for a URL.

Description

This base class is used by the library to provide common member functions for containers. This cannot be instantiated directly; Instead, use one of the containers or functions:

Containers

  • url
  • url_view
  • static_url

Functions

  • parse_absolute_uri
  • parse_origin_form
  • parse_relative_ref
  • parse_uri
  • parse_uri_reference
Return the url as a null-terminated string

Synopsis

Declared in <boost/url/url_base.hpp>
char const*
c_str() const noexcept;


Description

This function returns a pointer to a null terminated string representing the url, which may contain percent escapes.

Example

assert( std::strlen( url( "http://www.example.com" ).c_str() ) == 22 );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A pointer to a null-terminated string containing the URL.
Return the number of characters that can be stored without reallocating

Synopsis

Declared in <boost/url/url_base.hpp>
std::size_t
capacity() const noexcept;


Description

This does not include the null terminator, which is always present.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

*this
Clear the contents while preserving the capacity

Synopsis

Declared in <boost/url/url_base.hpp>
void
clear() noexcept;


Description

Postconditions

this->empty() == true

Complexity

Constant.

Exception Safety

No-throw guarantee.

Return the query as a container of parameters

Synopses

Declared in <boost/url/url_base.hpp>
Return the query as a container of parameters
params_encoded_ref
encoded_params() noexcept;


» more... Return the query as a container of parameters
params_encoded_view
encoded_params() const noexcept;


» more...

Return Value

  • *this
  • A bidirectional view of key/value pairs.

See Also

params, remove_query, set_encoded_query, set_query.

encoded_query, has_query, params, query.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_base.hpp>
params_encoded_ref
encoded_params() noexcept;


Description

This function returns a bidirectional view of key/value pairs over the query. The returned view references the same underlying character buffer; ownership is not transferred. Strings returned when iterating the range may contain percent escapes. The container is modifiable; changes to the container are reflected in the underlying URL.

Example

params_encoded_ref pv = url( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).encoded_params();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

See Also

params, remove_query, set_encoded_query, set_query.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_base.hpp>
params_encoded_view
encoded_params() const noexcept;


Description

This function returns a bidirectional view of key/value pairs over the query. The returned view references the same underlying character buffer; ownership is not transferred. Strings returned when iterating the range may contain percent escapes.

Example

params_encoded_view pv = url_view( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).encoded_params();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

A bidirectional view of key/value pairs.

See Also

encoded_query, has_query, params, query.

Return the path as a container of segments

Synopses

Declared in <boost/url/url_base.hpp>
Return the path as a container of segments
segments_encoded_ref
encoded_segments() noexcept;


» more... Return the path as a container of segments
segments_encoded_view
encoded_segments() const noexcept;


» more...

Return Value

  • *this
  • A bidirectional view of encoded segments.

See Also

encoded_segments, set_encoded_path, set_path, set_path_absolute.

is_path_absolute, encoded_path, path, segments, segments_encoded_view.

Return the path as a container of segments

Synopsis

Declared in <boost/url/url_base.hpp>
segments_encoded_ref
encoded_segments() noexcept;


Description

This function returns a bidirectional view of segments over the path. The returned view references the same underlying character buffer; ownership is not transferred. Strings returned when iterating the range may contain percent escapes. The container is modifiable; changes to the container are reflected in the underlying URL.

Example

url u( "http://example.com/path/to/file.txt" ); segments_encoded_ref sv = u.encoded_segments();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

See Also

encoded_segments, set_encoded_path, set_path, set_path_absolute.

Return the path as a container of segments

Synopsis

Declared in <boost/url/url_base.hpp>
segments_encoded_view
encoded_segments() const noexcept;


Description

This function returns a bidirectional view of strings over the path. The returned view references the same underlying character buffer; ownership is not transferred. Strings returned when iterating the range may contain percent escapes.

Example

segments_encoded_view sv = url_view( "/path/to/file.txt" ).encoded_segments();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

A bidirectional view of encoded segments.

See Also

is_path_absolute, encoded_path, path, segments, segments_encoded_view.

Normalize the URL components

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
normalize();


Description

Applies Syntax-based normalization to all components of the URL.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL authority

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
normalize_authority();


Description

Applies Syntax-based normalization to the URL authority.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL fragment

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
normalize_fragment();


Description

Applies Syntax-based normalization to the URL fragment.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL path

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
normalize_path();


Description

Applies Syntax-based normalization to the URL path.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded. Redundant path-segments are removed.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL query

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
normalize_query();


Description

Applies Syntax-based normalization to the URL query.

Percent-encoding triplets are normalized to uppercase letters. Percent-encoded octets that correspond to unreserved characters are decoded.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Normalize the URL scheme

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
normalize_scheme();


Description

Applies Syntax-based normalization to the URL scheme.

The scheme is normalized to lowercase.

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this
Return the query as a container of parameters

Synopses

Declared in <boost/url/url_base.hpp>
Return the query as a container of parameters
params_ref
params() noexcept;


» more... Return the query as a container of parameters
params_view
params() const noexcept;


» more... Return the query as a container of parameters
params_ref
params(encoding_opts opt) noexcept;


» more...
params_view
params(encoding_opts opt) const noexcept;


» more...

Return Value

  • *this
  • A bidirectional view of key/value pairs.
  • A range of references to the parameters.

Parameters

Name Description
opt The options for decoding. If this parameter is omitted, the space_as_plus is used.

See Also

encoded_params, remove_query, set_encoded_query, set_query.

encoded_params, encoded_query, has_query, query.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_base.hpp>
params_ref
params() noexcept;


Description

This function returns a bidirectional view of key/value pairs over the query. The returned view references the same underlying character buffer; ownership is not transferred. Any percent-escapes in strings returned when iterating the view are decoded first. The container is modifiable; changes to the container are reflected in the underlying URL.

Example

params_ref pv = url( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).params();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

See Also

encoded_params, remove_query, set_encoded_query, set_query.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_base.hpp>
params_view
params() const noexcept;


Return Value

A bidirectional view of key/value pairs.

See Also

encoded_params, encoded_query, has_query, query.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_base.hpp>
params_ref
params(encoding_opts opt) noexcept;


Description

This function returns a bidirectional view of key/value pairs over the query. The returned view references the same underlying character buffer; ownership is not transferred. Any percent-escapes in strings returned when iterating the view are decoded first. The container is modifiable; changes to the container are reflected in the underlying URL.

Example

encoding_opts opt; opt.space_as_plus = true; params_ref pv = url( "/sql?id=42&name=jane+doe&page+size=20" ).params(opt);

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

A range of references to the parameters.

Parameters

Name Description
opt The options for decoding. If this parameter is omitted, the space_as_plus is used.

See Also

encoded_params, remove_query, set_encoded_query, set_query.

Synopsis

Declared in <boost/url/url_view_base.hpp>
params_view
params(encoding_opts opt) const noexcept;


Remove the authority

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_authority();


Description

This function removes the authority, which includes the userinfo, host, and a port if present.

Example

assert( url( "http://example.com/echo.cgi" ).remove_authority().buffer() == "http:/echo.cgi" );

Postconditions

this->has_authority() == false && this->has_userinfo() == false && this->has_port() == false

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Return Value

*this

See Also

set_encoded_authority.

Remove the fragment

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_fragment() noexcept;


Description

This function removes the fragment. An empty fragment is distinct from having no fragment.

Example

assert( url( "?first=john&last=doe#anchor" ).remove_fragment().buffer() == "?first=john&last=doe" );

Postconditions

this->has_fragment() == false && this->encoded_fragment() == ""

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

See Also

remove_fragment, set_encoded_fragment, set_fragment.

Remove the origin component

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_origin();


Description

This function removes the origin, which consists of the scheme and authority.

Example

assert( url( "http://www.example.com/index.htm" ).remove_origin().buffer() == "/index.htm" );

Postconditions

this->scheme_id() == scheme::none && this->has_authority() == false

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

Return Value

*this
Remove the password

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_password() noexcept;


Description

This function removes the password from the userinfo if a password exists. If there is no userinfo or no authority, the call has no effect.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://user:pass@example.com" ).remove_password().authority().buffer() == "user@example.com" );

Postconditions

this->has_password() == false && this->encoded_password().empty() == true

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

See Also

set_encoded_password, set_encoded_user, set_password, set_user.

Remove the port

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_port() noexcept;


Description

If a port exists, it is removed. The rest of the authority is unchanged.

Example

assert( url( "http://www.example.com:80" ).remove_port().authority().buffer() == "www.example.com" );

Postconditions

this->has_port() == false && this->port_number() == 0 && this->port() == ""

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

*this

See Also

set_port.

Remove the query

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_query() noexcept;


Description

If a query is present, it is removed. An empty query is distinct from having no query.

Example

assert( url( "http://www.example.com?id=42" ).remove_query().buffer() == "http://www.example.com" );

Postconditions

this->has_query() == false && this->params().empty()

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

See Also

encoded_params, params, set_encoded_query, set_query.

Remove the scheme

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_scheme();


Description

This function removes the scheme if it is present.

Example

assert( url("http://www.example.com/index.htm" ).remove_scheme().buffer() == "//www.example.com/index.htm" );

Postconditions

this->has_scheme() == false && this->scheme_id() == scheme::none

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Specification

Return Value

*this

See Also

set_scheme.

Remove the userinfo

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
remove_userinfo() noexcept;


Description

This function removes the userinfo if present, without removing any authority.

Example

assert( url( "http://user@example.com" ).remove_userinfo().has_userinfo() == false );

Postconditions

this->has_userinfo() == false && this->encoded_userinfo().empty == true

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

See Also

set_encoded_userinfo, set_userinfo.

Adjust the capacity without changing the size

Synopsis

Declared in <boost/url/url_base.hpp>
void
reserve(std::size_t n);


Description

This function adjusts the capacity of the container in characters, without affecting the current contents. Has no effect if n <= this->capacity().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Exceptions

Name Thrown on
bad_alloc Allocation failure

Parameters

Name Description
n The capacity in characters, excluding any null terminator.
Resolve a URL reference against this base URL

Synopsis

Declared in <boost/url/url_base.hpp>
system::result<void>
resolve(url_view_base const& ref);


Description

This function attempts to resolve a URL reference ref against this base URL in a manner similar to that of a web browser resolving an anchor tag.

This URL must satisfy the URI grammar. In other words, it must contain a scheme.

Relative references are only usable when in the context of a base absolute URI. This process of resolving a relative reference within the context of a base URI is defined in detail in rfc3986 (see below).

The resolution process works as if the relative reference is appended to the base URI and the result is normalized.

Given the input base URL, this function resolves the relative reference as if performing the following steps:

  • Ensure the base URI has at least a scheme
  • Normalizing the reference path
  • Merge base and reference paths
  • Normalize the merged path

This function places the result of the resolution into this URL in place.

If an error occurs, the contents of this URL are unspecified and a boost::system::result with an system::error_code is returned.

NOTE

Abnormal hrefs where the number of ".." segments exceeds the number of segments in the base path are handled by including the unmatched ".." segments in the result, as described in .

Example

url base1( "/one/two/three" ); base1.resolve("four"); assert( base1.buffer() == "/one/two/four" ); url base2( "http://example.com/" ) base2.resolve("/one"); assert( base2.buffer() == "http://example.com/one" ); url base3( "http://example.com/one" ); base3.resolve("/two"); assert( base3.buffer() == "http://example.com/two" ); url base4( "http://a/b/c/d;p?q" ); base4.resolve("g#s"); assert( base4.buffer() == "http://a/b/c/g#s" );

BNF

absolute-URI = scheme ":" hier-part [ "?" query ]

Exception Safety

Basic guarantee. Calls to allocate may throw.

Specification

Return Value

An empty boost::system::result upon success, otherwise an error code if !base.has_scheme().

Parameters

Name Description
ref The URL reference to resolve.

See Also

url, url_view.

Return the path as a container of segments

Synopses

Declared in <boost/url/url_base.hpp>
Return the path as a container of segments
urls::segments_ref
segments() noexcept;


» more... Return the path as a container of segments
segments_view
segments() const noexcept;


» more...

Return Value

  • *this
  • A bidirectional view of segments.

See Also

encoded_segments, set_encoded_path, set_path, set_path_absolute.

is_path_absolute, encoded_path, encoded_segments. path, segments_view.

Return the path as a container of segments

Synopsis

Declared in <boost/url/url_base.hpp>
urls::segments_ref
segments() noexcept;


Description

This function returns a bidirectional view of segments over the path. The returned view references the same underlying character buffer; ownership is not transferred. Any percent-escapes in strings returned when iterating the view are decoded first. The container is modifiable; changes to the container are reflected in the underlying URL.

Example

url u( "http://example.com/path/to/file.txt" ); segments sv = u.segments();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

See Also

encoded_segments, set_encoded_path, set_path, set_path_absolute.

Return the path as a container of segments

Synopsis

Declared in <boost/url/url_base.hpp>
segments_view
segments() const noexcept;


Description

This function returns a bidirectional view of strings over the path. The returned view references the same underlying character buffer; ownership is not transferred. Any percent-escapes in strings returned when iterating the view are decoded first.

Example

segments_view sv = url_view( "/path/to/file.txt" ).segments();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = [ "/" ] segment *( "/" segment )

Specification

Return Value

A bidirectional view of segments.

See Also

is_path_absolute, encoded_path, encoded_segments. path, segments_view.

Set the authority

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_authority(pct_string_view s);


Description

This function sets the authority to the specified string. The string may contain percent-escapes.

Example

assert( url().set_encoded_authority( "My%20Computer" ).has_authority() );

Exception Safety

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

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Specification

Exceptions

Name Thrown on
system_eror The string contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The authority string to set.

See Also

remove_authority.

Set the fragment.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_fragment(pct_string_view s);


Description

This function sets the fragment to the specified string, which may contain percent-escapes and which may be empty. An empty fragment is distinct from having no fragment. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url("?first=john&last=doe" ).set_encoded_fragment( "john%2Ddoe" ).fragment() == "john-doe" );

Postconditions

this->has_fragment() == true && this->fragment() == decode_view( s )

Complexity

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

Exception Safety

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

BNF

fragment = *( pchar / "/" / "?" )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

  • *this
  • *this

Parameters

Name Description
s The string to set.

See Also

remove_fragment, set_fragment.

Set the host

Synopsis

Declared in <boost/url/url_base.hpp>
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.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

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.

Set the host to an address

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_host_address(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, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture, 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.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to a name

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_host_name(pct_string_view s);


Description

The host is set to the specified string, which may contain percent-escapes and 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.

Example

assert( url( "http://www.example.com/index.htm").set_encoded_host_name( "localhost" ).host_address() == "localhost" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::name

Exception Safety

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

BNF

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

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the query params

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_params(std::initializer_list<param_pct_view> ps) noexcept;


Description

This sets the query params to the elements in the list, which may contain percent-escapes and can be empty.

An empty list of params is distinct from having no query.

Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_encoded_params( {"id", "42"} ).encoded_query() == "id=42" );

Postconditions

this->has_query() == true

Complexity

Linear.

Exception Safety

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

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Exceptions

Name Thrown on
system_error some element in ps contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
ps The params to set.

See Also

set_params, params, remove_query, set_encoded_query, set_query.

Set the password.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_password(pct_string_view s);


Description

This function sets the password in the userinfo to the string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url("http://user@example.com").set_encoded_password( "pass" ).encoded_userinfo() == "user:pass" );

Postconditions

this->has_password() == true

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set. This string may contain any characters, including nulls.

See Also

remove_password, set_encoded_password, set_encoded_user, set_user.

Set the path.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_path(pct_string_view s);


Description

This function sets the path to the string, which may contain percent-escapes and can be empty. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

NOTE

The library may adjust the final result to ensure that no other parts of the url is semantically affected.

Example

url u( "http://www.example.com" ); u.set_encoded_path( "path/to/file.txt" ); assert( u.encoded_path() == "/path/to/file.txt" );

Complexity

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

Exception Safety

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

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_segments, segments, set_path, set_path_absolute.

Set the query

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_query(pct_string_view s);


Description

This sets the query to the string, which may contain percent-escapes and can be empty. An empty query is distinct from having no query. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_encoded_query( "id=42" ).encoded_query() == "id=42" );

Postconditions

this->has_query() == true && this->query() == decode_view( s );

Exception Safety

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

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_params, params, remove_query, set_query.

Set the user

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_user(pct_string_view s);


Description

This function sets the user part of the userinfo the the string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( url().set_encoded_user("john%20doe").userinfo() == "john doe" );

Postconditions

this->has_authority() == true && this->has_userinfo() == true

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

  • *this
  • *this

Parameters

Name Description
s The string to set.

See Also

remove_password, set_encoded_password, set_password, set_user.

Set the userinfo.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_userinfo(pct_string_view s);


Description

The userinfo is set to the given string, which may contain percent-escapes. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result. The effects on the user and password depend on the presence of a colon (':') in the string:

  • If an unescaped colon exists, the characters up to the colon become the user and the rest of the characters after the colon become the password. In this case has_password returns true. Otherwise,
  • If there is no colon, the user is set to the string. The function has_password returns false.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://example.com" ).set_encoded_userinfo( "john%20doe" ).user() == "john doe" );

Complexity

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

Exception Safety

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

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_userinfo, set_userinfo.

Set the zone ID for an IPv6 address (percent-encoded).

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_encoded_zone_id(pct_string_view s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Escapes in the string are preserved, and reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_encoded_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The zone ID to set.
Set the fragment.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_fragment(core::string_view s);


Description

This function sets the fragment to the specified string, which may be empty. An empty fragment is distinct from having no fragment. Reserved characters in the string are percent-escaped in the result.

Example

assert( url("?first=john&last=doe" ).set_encoded_fragment( "john doe" ).encoded_fragment() == "john%20doe" );

Postconditions

this->has_fragment() == true && this->fragment() == s

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

fragment = *( pchar / "/" / "?" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_fragment, set_encoded_fragment.

Set the host

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_host(core::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, which may be empty. 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.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_host_address(core::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, then the host is set to that address. The host type is host_type::ipv6.
  • If the string is a valid IPvFuture, then the host is set to that address. The host type is host_type::ipvfuture.
  • Otherwise, the host name is set to the string, which may be empty. 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_address( "127.0.0.1" ).buffer() == "http://127.0.0.1" );

Postconditions

this->has_authority() == true

Complexity

Linear in s.size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

set_encoded_host, 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.

Set the host to an address

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_host_ipv4(ipv4_address const& addr);


Description

The host is set to the specified IPv4 address. The host type is host_type::ipv4.

Example

assert( url("http://www.example.com").set_host_ipv4( ipv4_address( "127.0.0.1" ) ).buffer() == "http://127.0.0.1" );

Complexity

Linear in this->size().

Postconditions

this->has_authority() == true && this->host_ipv4_address() == addr && this->host_type() == host_type::ipv4

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

Return Value

*this

Parameters

Name Description
addr The address to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_host_ipv6(ipv6_address const& addr);


Description

The host is set to the specified IPv6 address. The host type is host_type::ipv6.

Example

assert( url().set_host_ipv6( ipv6_address( "1::6:c0a8:1" ) ).authority().buffer() == "[1::6:c0a8:1]" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::ipv6

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

Return Value

*this

Parameters

Name Description
addr The address to set.

See Also

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

Set the host to an address

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_host_ipvfuture(core::string_view s);


Description

The host is set to the specified IPvFuture string. The host type is host_type::ipvfuture.

Example

assert( url().set_host_ipvfuture( "v42.bis" ).buffer() == "//[v42.bis]" );

Complexity

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

Postconditions

this->has_authority() == true && this->host_ipvfuture) == s && this->host_type() == host_type::ipvfuture

Exception Safety

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

BNF

IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid percent-encoding.

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the host to a name

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_host_name(core::string_view s);


Description

The host is set to the specified string, which may be empty. Reserved characters in the string are percent-escaped in the result. The host type is host_type::name.

Example

assert( url( "http://www.example.com/index.htm").set_host_name( "localhost" ).host_address() == "localhost" );

Postconditions

this->has_authority() == true && this->host_ipv6_address() == addr && this->host_type() == host_type::name

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

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

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

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

Set the query params

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_params(
    std::initializer_list<param_view> ps,
    encoding_opts opts = {}) noexcept;


Description

This sets the query params to the list of param_view, which can be empty.

An empty list of params is distinct from having no params.

Reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_params( {"id", "42"} ).query() == "id=42" );

Postconditions

this->has_query() == true

Exception Safety

Strong guarantee. Calls to allocate may throw.

Complexity

Linear.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
ps The params to set.
opts The options for encoding.

See Also

encoded_params, remove_query, set_encoded_query, set_query.

Set the password.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_password(core::string_view s);


Description

This function sets the password in the userinfo to the string. Reserved characters in the string are percent-escaped in the result.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url("http://user@example.com").set_password( "pass" ).encoded_userinfo() == "user:pass" );

Postconditions

this->has_password() == true && this->password() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set. This string may contain any characters, including nulls.

See Also

remove_password, set_encoded_password, set_encoded_user, set_user.

Set the path.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_path(core::string_view s);


Description

This function sets the path to the string, which may be empty. Reserved characters in the string are percent-escaped in the result.

NOTE

The library may adjust the final result to ensure that no other parts of the URL are semantically affected.

NOTE

This function does not encode '/' chars, which are unreserved for paths but reserved for path segments. If a path segment should include encoded '/'s to differentiate it from path separators, the functions set_encoded_path or segments should be used instead.

Example

url u( "http://www.example.com" ); u.set_path( "path/to/file.txt" ); assert( u.path() == "/path/to/file.txt" );

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_segments, segments, set_encoded_path, set_path_absolute.

Set if the path is absolute

Synopsis

Declared in <boost/url/url_base.hpp>
bool
set_path_absolute(bool absolute);


Description

This function adjusts the path to make it absolute or not, depending on the parameter.

NOTE

If an authority is present, the path is always absolute. In this case, the function has no effect.

Example

url u( "path/to/file.txt" ); assert( u.set_path_absolute( true ) ); assert( u.buffer() == "/path/to/file.txt" );

Postconditions

this->is_path_absolute() == true && this->encoded_path().front() == '/'

Complexity

Linear in this->size().

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

true on success.

Parameters

Name Description
absolute If true, the path is made absolute.

See Also

encoded_segments, segments, set_encoded_path, set_path.

Set the port

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_port(core::string_view s);


Description

This port is set to the string, which must contain only digits or be empty. An empty port string is distinct from having no port.

Example

assert( url( "http://www.example.com" ).set_port( "8080" ).authority().buffer() == "www.example.com:8080" );

Postconditions

this->has_port() == true && this->port_number() == n && this->port() == std::to_string(n)

Exception Safety

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

BNF

port = *DIGIT

Specification

Exceptions

Name Thrown on
system_error s does not contain a valid port.

Return Value

*this

Parameters

Name Description
s The port string to set.

See Also

remove_port, set_port.

Set the port

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_port_number(uint16_t n);


Description

The port is set to the specified integer.

Example

assert( url( "http://www.example.com" ).set_port_number( 8080 ).authority().buffer() == "www.example.com:8080" );

Postconditions

this->has_authority() == true && this->has_port() == true && this->port_number() == n

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

*this

Parameters

Name Description
n The port number to set.

See Also

remove_port, set_port.

Set the query

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_query(core::string_view s);


Description

This sets the query to the string, which can be empty. An empty query is distinct from having no query. Reserved characters in the string are percent-escaped in the result.

Example

assert( url( "http://example.com" ).set_query( "id=42" ).query() == "id=42" );

Postconditions

this->has_query() == true && this->query() == s

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

encoded_params, params, remove_query, set_encoded_query.

Set the scheme

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_scheme(core::string_view s);


Description

The scheme is set to the specified string, which must contain a valid scheme without any trailing colon (':'). Note that schemes are case-insensitive, and the canonical form is lowercased.

Example

assert( url( "http://www.example.com" ).set_scheme( "https" ).scheme_id() == scheme::https );

Complexity

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

Exception Safety

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

BNF

scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Specification

Exceptions

Name Thrown on
system_error s contains an invalid scheme.

Return Value

*this

Parameters

Name Description
s The scheme to set.

See Also

remove_scheme.

Set the scheme

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_scheme_id(urls::scheme id);


Description

This function sets the scheme to the specified known urls::scheme id, which may not be scheme::unknown or else an exception is thrown. If the id is scheme::none, this function behaves as if remove_scheme were called.

Example

assert( url( "http://example.com/echo.cgi" ).set_scheme_id( scheme::wss ).buffer() == "wss://example.com/echo.cgi" );

Complexity

Linear in this->size().

Exception Safety

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

Specification

Exceptions

Name Thrown on
system_error The scheme is invalid.

Return Value

*this

Parameters

Name Description
id The scheme to set.
Set the user

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_user(core::string_view s);


Description

This function sets the user part of the userinfo to the string. Any special or reserved characters in the string are automatically percent-encoded.

Example

assert( url().set_user("john doe").encoded_userinfo() == "john%20doe" );

Postconditions

this->has_authority() == true && this->has_userinfo() == true

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_password, set_encoded_password, set_encoded_user, set_password.

Set the userinfo

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_userinfo(core::string_view s);


Description

The userinfo is set to the given string, which may contain percent-escapes. Any special or reserved characters in the string are automatically percent-encoded. The effects on the user and password depend on the presence of a colon (':') in the string:

  • If an unescaped colon exists, the characters up to the colon become the user and the rest of the characters after the colon become the password. In this case has_password returns true. Otherwise,
  • If there is no colon, the user is set to the string. The function has_password returns false.

NOTE

The interpretation of the userinfo as individual user and password components is scheme-dependent. Transmitting passwords in URLs is deprecated.

Example

assert( url( "http://example.com" ).set_userinfo( "user:pass" ).encoded_user() == "user" );

Complexity

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

Exception Safety

Strong guarantee. Calls to allocate may throw.

BNF

userinfo = [ [ user ] [ ':' password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

*this

Parameters

Name Description
s The string to set.

See Also

remove_userinfo, set_encoded_userinfo.

Set the zone ID for an IPv6 address.

Synopsis

Declared in <boost/url/url_base.hpp>
url_base&
set_zone_id(core::string_view s);


Description

This function sets the zone ID for the host if the host is an IPv6 address. Reserved characters in the string are percent-escaped in the result.

Example

assert( u.set_host_ipv6( ipv6_address( "fe80::1" ) ).set_zone_id( "eth0" ).buffer() == "https://[fe80::1%25eth0]" );

Complexity

Linear in this->size().

Exception Safety

Strong guarantee. Calls to allocate may throw.

Specification

Return Value

*this

Parameters

Name Description
s The zone ID to set.
A non-owning reference to a valid URL

Synopsis

Declared in <boost/url/url_view.hpp>
class url_view
    : public url_view_base


Base Classes

Name Description
url_view_baseCommon functionality for containers

Member Functions

Name Description
url_view [constructor]Constructor
~url_view [destructor]Destructor
operator= Assignment
authority Return the authority
buffer Return the url string
compare Return the result of comparing this with another url
data Return a pointer to the url's character buffer
empty Return true if the url is empty
encoded_authority Return the authority.
encoded_fragment Return the fragment
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_origin Return the origin
encoded_params Return the query as a container of parameters
encoded_password Return the password
encoded_path Return the path
encoded_query Return the query
encoded_resource Return the resource
encoded_segments Return the path as a container of segments
encoded_target Return the target
encoded_user Return the user
encoded_userinfo Return the userinfo
encoded_zone_id Return the IPv6 Zone ID
fragment Return the fragment
has_authority Return true if an authority is present
has_fragment Return true if a fragment is present
has_password Return true if a password is present
has_port Return true if a port is present
has_query Return true if a query is present
has_scheme Return true a scheme is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
is_path_absolute Return true if the path is absolute
params Return the query as a container of parameters
password Return the password
path Return the path
persist Return a shared, persistent copy of the url
port Return the port
port_number Return the port
query Return the query
scheme Return the scheme
scheme_id Return the scheme
segments Return the path as a container of segments
size Return the number of characters in the url
user Return the user
userinfo Return the userinfo
zone_id Return the IPv6 Zone ID
operator core::string_view Return the URL as a core::string_view

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Protected Member Functions

Name Description
digest Calculate a hash of the url

Friends

|===
Name Description
params_encoded_base Common functionality for containers
params_base Common functionality for query parameter containers
url_view_base Common functionality for containers
std::hash<url_view>

Non-Member Functions

Name Description
operator!=Return the result of comparing two URLs
operator<Return the result of comparing two URLs
operator<=Return the result of comparing two URLs
operator==Return the result of comparing two URLs
operator>Return the result of comparing two URLs
operator>=Return the result of comparing two URLs
parse_absolute_uriReturn a reference to a parsed URL string
parse_origin_formReturn a reference to a parsed URL string
parse_relative_refReturn a reference to a parsed URL string
parse_uriReturn a reference to a parsed URL string
parse_uri_referenceReturn a reference to a parsed URL string
resolveResolve a URL reference against a base URL

Description

Objects of this type represent valid URL strings constructed from a parsed, external character buffer whose storage is managed by the caller. That is, it acts like a core::string_view in terms of ownership. The caller is responsible for ensuring that the lifetime of the underlying character buffer extends until it is no longer referenced.

Example 1

Construction from a string parses the input as a URI-reference and throws an exception on error. Upon success, the constructed object points to the passed character buffer; ownership is not transferred.

url_view u( "https://www.example.com/index.htm?text=none#a1" );

Example 2

Parsing functions like parse_uri_reference return a boost::system::result containing either a valid url_view upon success, otherwise they contain an error. The error can be converted to an exception by the caller if desired:

system::result< url_view > rv = parse_uri_reference( "https://www.example.com/index.htm?text=none#a1" );

BNF

URI-reference = URI / relative-ref URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

See Also

parse_absolute_uri, parse_origin_form, parse_relative_ref, parse_uri, parse_uri_reference.

Constructor

Synopses

Declared in <boost/url/url_view.hpp>
Constructor
url_view() noexcept;


» more... Constructor
url_view(url_view const& other) noexcept;


» more... Constructor
url_view(core::string_view s);


» more... Constructor
url_view(url_view_base const& other) noexcept;


» more... Constructor
template<class String>
requires std::is_convertible<
                String,
                core::string_view
                    >::value &&
            !std::is_convertible<
                String*,
                url_view_base*
                    >::value
url_view(String const& s);


» more...

Exceptions

Name Thrown on
system_error The input failed to parse correctly.

Parameters

Name Description
other The other view.
s The string to parse.

See Also

parse_uri_reference.

Constructor

Synopsis

Declared in <boost/url/url_view.hpp>
url_view() noexcept;


Description

Default constructed views refer to a string with zero length, which always remains valid. This matches the grammar for a relative-ref with an empty path and no query or fragment.

Example

url_view u;

Postconditions

this->empty() == true

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Constructor

Synopsis

Declared in <boost/url/url_view.hpp>
url_view(url_view const& other) noexcept;


Description

After construction, both views reference the same underlying character buffer. Ownership is not transferred.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
Constructor

Synopsis

Declared in <boost/url/url_view.hpp>
url_view(core::string_view s);


Description

This function constructs a URL from the string s, which must contain a valid URI or relative-ref or else an exception is thrown. Upon successful construction, the view refers to the characters in the buffer pointed to by s. Ownership is not transferred; The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

url_view u( "http://www.example.com/index.htm" );

Effects

return parse_uri_reference( s ).value();

Complexity

Linear in s.size().

Exception Safety

Exceptions thrown on invalid input.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Exceptions

Name Thrown on
system_error The input failed to parse correctly.

Parameters

Name Description
s The string to parse.

See Also

parse_uri_reference.

Constructor

Synopsis

Declared in <boost/url/url_view.hpp>
url_view(url_view_base const& other) noexcept;


Description

After construction, both views reference the same underlying character buffer. Ownership is not transferred.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing.

Parameters

Name Description
other The other view.
Constructor

Synopsis

Declared in <boost/url/url_view.hpp>
template<class String>
requires std::is_convertible<
                String,
                core::string_view
                    >::value &&
            !std::is_convertible<
                String*,
                url_view_base*
                    >::value
url_view(String const& s);


Description

This function constructs a URL from the string s, which must contain a valid URI or relative-ref or else an exception is thrown. Upon successful construction, the view refers to the characters in the buffer pointed to by s. Ownership is not transferred; The caller is responsible for ensuring that the lifetime of the buffer extends until it is no longer referenced.

Example

url_view u( "http://www.example.com/index.htm" );

Effects

return parse_uri_reference( s ).value();

Complexity

Linear in s.size().

Exception Safety

Exceptions thrown on invalid input.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Parameters

Name Description
s The string to parse.

See Also

parse_uri_reference.

Destructor

Synopsis

Declared in <boost/url/url_view.hpp>
constexpr
~url_view() = default;


Description

Any params, segments, iterators, or other views which reference the same underlying character buffer remain valid.

Assignment

Synopses

Declared in <boost/url/url_view.hpp>
Assignment
url_view&
operator=(url_view const& other) noexcept;


» more... Assignment
url_view&
operator=(url_view_base const& other) noexcept;


» more...

Return Value

A reference to this object.

Parameters

Name Description
other The other view.
Assignment

Synopsis

Declared in <boost/url/url_view.hpp>
url_view&
operator=(url_view const& other) noexcept;


Description

After assignment, both views reference the same underlying character buffer. Ownership is not transferred.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A reference to this object.

Parameters

Name Description
other The other view.
Assignment

Synopsis

Declared in <boost/url/url_view.hpp>
url_view&
operator=(url_view_base const& other) noexcept;


Description

After assignment, both views reference the same underlying character buffer. Ownership is not transferred.

Postconditions

this->buffer().data() == other.buffer().data()

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A reference to this object.

Parameters

Name Description
other The other view.
Return the maximum number of characters possible

Synopsis

Declared in <boost/url/url_view.hpp>
constexpr
static
std::size_t
max_size() noexcept;


Description

This represents the largest number of characters that are possible in a url, not including any null terminator.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The maximum number of characters possible.
Common functionality for containers

Synopsis

Declared in <boost/url/url_view_base.hpp>
class url_view_base;


Member Functions

Name Description
authority Return the authority
buffer Return the url string
compare Return the result of comparing this with another url
data Return a pointer to the url's character buffer
empty Return true if the url is empty
encoded_authority Return the authority.
encoded_fragment Return the fragment
encoded_host Return the host
encoded_host_address Return the host
encoded_host_and_port Return the host and port
encoded_host_name Return the host name
encoded_origin Return the origin
encoded_params Return the query as a container of parameters
encoded_password Return the password
encoded_path Return the path
encoded_query Return the query
encoded_resource Return the resource
encoded_segments Return the path as a container of segments
encoded_target Return the target
encoded_user Return the user
encoded_userinfo Return the userinfo
encoded_zone_id Return the IPv6 Zone ID
fragment Return the fragment
has_authority Return true if an authority is present
has_fragment Return true if a fragment is present
has_password Return true if a password is present
has_port Return true if a port is present
has_query Return true if a query is present
has_scheme Return true a scheme is present
has_userinfo Return true if a userinfo is present
host Return the host
host_address Return the host
host_ipv4_address Return the host IPv4 address
host_ipv6_address Return the host IPv6 address
host_ipvfuture Return the host IPvFuture address
host_name Return the host name
host_type Return the host type
is_path_absolute Return true if the path is absolute
params Return the query as a container of parameters
password Return the password
path Return the path
persist Return a shared, persistent copy of the url
port Return the port
port_number Return the port
query Return the query
scheme Return the scheme
scheme_id Return the scheme
segments Return the path as a container of segments
size Return the number of characters in the url
user Return the user
userinfo Return the userinfo
zone_id Return the IPv6 Zone ID
operator core::string_view Return the URL as a core::string_view

Static Member Functions

Name Description
max_size Return the maximum number of characters possible

Protected Member Functions

Name Description
digest Calculate a hash of the url

Friends

|===
Name Description
operator<< Format the url to the output stream
operator>= Return the result of comparing two URLs
operator> Return the result of comparing two URLs
operator<= Return the result of comparing two URLs
operator< Return the result of comparing two URLs
operator!= Return the result of comparing two URLs
operator== Return the result of comparing two URLs
segments_view A view representing path segments in a URL
segments_ref A view representing path segments in a URL
segments_encoded_view A view representing path segments in a URL
segments_encoded_ref A view representing path segments in a URL
segments_encoded_base Common functionality for containers
segments_base Common functionality for containers
params_view A view representing query parameters in a URL
params_ref A view representing query parameters in a URL
params_encoded_view A view representing query parameters in a URL
params_encoded_ref A view representing query parameters in a URL
params_encoded_base Common functionality for containers
params_base Common functionality for query parameter containers
static_url_base Common implementation for all static URLs
url_view A non-owning reference to a valid URL
url_base Common functionality for containers
url A modifiable container for a URL.

Non-Member Functions

Name Description
resolveResolve a URL reference against a base URL

Derived Classes

Name Description
url_base Common functionality for containers
url_view A non-owning reference to a valid URL

Description

This base class is used by the library to provide common member functions for containers. This cannot be instantiated directly; Instead, use one of the containers or functions:

Containers

  • url
  • url_view
  • static_url

Functions

  • parse_absolute_uri
  • parse_origin_form
  • parse_relative_ref
  • parse_uri
  • parse_uri_reference
Return the authority

Synopsis

Declared in <boost/url/url_view_base.hpp>
authority_view
authority() const noexcept;


Description

This function returns the authority as an authority_view.

Example

authority_view a = url_view( "https://www.example.com:8080/index.htm" ).authority();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

An authority_view representing the authority.

See Also

encoded_authority, has_authority.

Return the url string

Synopsis

Declared in <boost/url/url_view_base.hpp>
core::string_view
buffer() const noexcept;


Description

This function returns the entire url, which may contain percent escapes.

Example

assert( url_view( "http://www.example.com" ).buffer() == "http://www.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The url as a string.
Return the result of comparing this with another url

Synopsis

Declared in <boost/url/url_view_base.hpp>
int
compare(url_view_base const& other) const noexcept;


Description

This function compares two URLs according to Syntax-Based comparison algorithm.

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing.

Specification

Return Value

-1 if *this < other, 0 if this == other, and 1 if this > other.

Parameters

Name Description
other The url to compare
Return a pointer to the url's character buffer

Synopsis

Declared in <boost/url/url_view_base.hpp>
char const*
data() const noexcept;


Description

This function returns a pointer to the first character of the url, which is not guaranteed to be null-terminated.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A pointer to the first character.
Return true if the url is empty

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
empty() const noexcept;


Description

The empty string matches the relative-ref grammar.

Example

assert( url_view( "" ).empty() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

relative-ref = relative-part [ "?" query ] [ "#" fragment ] relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-empty

Specification

Return Value

true if the url is empty.
Return the authority.

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_authority() const noexcept;


Description

If present, this function returns a string representing the authority (which may be empty). Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "file://Network%20Drive/My%2DFiles" ).encoded_authority() == "Network%20Drive" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

The authority as a string.

See Also

authority, has_authority.

Return the fragment

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_fragment() const noexcept;


Description

This function returns the fragment as a string with percent-escapes. Ownership is not transferred; the string returned references the underlying character buffer, which must remain valid or else undefined behavior occurs.

Example

assert( url_view( "http://www.example.com/index.htm#a%2D1" ).encoded_fragment() == "a%2D1" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

fragment = *( pchar / "/" / "?" ) pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

Specification

Return Value

The fragment portion of the url.

See Also

fragment, has_fragment.

Return the host

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_host() const noexcept;


Description

This function returns the host portion of the authority as a string, or the empty string if there is no authority. The returned string may contain percent escapes.

Example

assert( url_view( "https://www%2droot.example.com/" ).encoded_host() == "www%2droot.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host address as a string.
Return the host

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_host_address() const noexcept;


Description

The value returned by this function depends on the type of host returned from the function host_type.

  • If the type is host_type::ipv4, then the IPv4 address string is returned.
  • If the type is host_type::ipv6, then the IPv6 address string is returned, without any enclosing brackets.
  • If the type is host_type::ipvfuture, then the IPvFuture address string is returned, without any enclosing brackets.
  • If the type is host_type::name, then the host name string is returned. Any percent-escapes in the string are decoded first.
  • If the type is host_type::none, then an empty string is returned. The returned string may contain percent escapes.

Example

assert( url_view( "https://www%2droot.example.com/" ).encoded_host_address() == "www%2droot.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host address as a string.
Return the host and port

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_host_and_port() const noexcept;


Description

If an authority is present, this function returns the host and optional port as a string, which may be empty. Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "http://www.example.com:8080/index.htm" ).encoded_host_and_port() == "www.example.com:8080" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

The host and port portion of the url.

See Also

has_port, port, port_number.

Return the host name

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_host_name() const noexcept;


Description

If the host type is host_type::name, this function returns the name as a string. Otherwise, if the host type is not an name, it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "https://www%2droot.example.com/" ).encoded_host_name() == "www%2droot.example.com" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host name as a percent-encoded string.
Return the origin

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_origin() const noexcept;


Description

If an authority is present, this function returns the scheme and authority portion of the url. Otherwise, an empty string is returned. The returned string may contain percent escapes.

Example

assert( url_view( "http://www.example.com:8080/index.htm?text=none#h1" ).encoded_origin() == "http://www.example.com:8080" );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The origin portion of the url.

See Also

encoded_resource, encoded_target.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_view_base.hpp>
params_encoded_view
encoded_params() const noexcept;


Description

This function returns a bidirectional view of key/value pairs over the query. The returned view references the same underlying character buffer; ownership is not transferred. Strings returned when iterating the range may contain percent escapes.

Example

params_encoded_view pv = url_view( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).encoded_params();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

A bidirectional view of key/value pairs.

See Also

encoded_query, has_query, params, query.

Return the password

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_password() const noexcept;


Description

This function returns the password portion of the userinfo as a percent-encoded string.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).encoded_password() == "pass" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The password as a string.

See Also

has_password, has_userinfo, encoded_user, encoded_userinfo, password, user, userinfo.

Return the path

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_path() const noexcept;


Description

This function returns the path as a string. The path may be empty. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "file:///Program%20Files/Games/config.ini" ).encoded_path() == "/Program%20Files/Games/config.ini" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

The path as a string.

See Also

is_path_absolute, encoded_segments. path, segments.

Return the query

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_query() const noexcept;


Description

If this contains a query, it is returned as a string (which may be empty). Otherwise, an empty string is returned. The returned string may contain percent escapes.

Example

assert( url_view( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).encoded_query() == "id=42&name=jane%2Ddoe&page+size=20" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

The query as a string.

See Also

encoded_params, has_query, params, query.

Return the resource

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_resource() const noexcept;


Description

This function returns the resource, which is the portion of the url that includes only the path, query, and fragment. The returned string may contain percent escapes.

Example

assert( url_view( "http://www.example.com/index.html?query#frag" ).encoded_resource() == "/index.html?query#frag" );

Complexity

Constant.

Exception Safety

Throws nothing.

Specification

Return Value

The resource portion of the url.

See Also

encoded_origin, encoded_target.

Return the path as a container of segments

Synopsis

Declared in <boost/url/url_view_base.hpp>
segments_encoded_view
encoded_segments() const noexcept;


Description

This function returns a bidirectional view of strings over the path. The returned view references the same underlying character buffer; ownership is not transferred. Strings returned when iterating the range may contain percent escapes.

Example

segments_encoded_view sv = url_view( "/path/to/file.txt" ).encoded_segments();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

A bidirectional view of encoded segments.

See Also

is_path_absolute, encoded_path, path, segments, segments_encoded_view.

Return the target

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_target() const noexcept;


Description

This function returns the target, which is the portion of the url that includes only the path and query. The returned string may contain percent escapes.

Example

assert( url_view( "http://www.example.com/index.html?query#frag" ).encoded_target() == "/index.html?query" );

Complexity

Constant.

Exception Safety

Throws nothing.

Specification

Return Value

The target portion of the url.

See Also

encoded_origin, encoded_resource.

Return the user

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_user() const noexcept;


Description

If present, this function returns a string representing the user (which may be empty). Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).encoded_user() == "jane%2Ddoe" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The user as a string.

See Also

has_password, has_userinfo, encoded_password, encoded_userinfo, password, user, userinfo.

Return the userinfo

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_userinfo() const noexcept;


Description

If present, this function returns a string representing the userinfo (which may be empty). Otherwise it returns an empty string. The returned string may contain percent escapes.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).encoded_userinfo() == "jane%2Ddoe:pass" );

Complexity

Constant.

Exception Safety

Throws nothing

BNF

userinfo = user [ ":" [ password ] ] authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

The userinfo as a string.

See Also

has_password, has_userinfo, encoded_password, encoded_user, password, user, userinfo.

Return the IPv6 Zone ID

Synopsis

Declared in <boost/url/url_view_base.hpp>
pct_string_view
encoded_zone_id() const noexcept;


Description

If the host type is host_type::ipv6, this function returns the Zone ID as a string. Otherwise an empty string is returned. The returned string may contain percent escapes.

Example

assert( url_view( "http://[fe80::1%25eth0]/" ).encoded_zone_id() == "eth0" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPv6addrz / IPvFuture ) "]" ZoneID = 1*( unreserved / pct-encoded ) IPv6addrz = IPv6address "%25" ZoneID

Specification

Return Value

The Zone ID as a percent-encoded string.
Return the fragment

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
fragment(StringToken&& token = {}) const;


Description

This function calculates the fragment of the url, with percent escapes decoded and without the leading pound sign ('#') whose presence indicates that the url contains a fragment.

This function accepts an optional StringToken parameter which controls the return type and behavior of the function:

  • When called with no arguments, the return type of the function is std::string. Otherwise
  • When called with a string token, the behavior and return type of the function depends on the type of string token being passed.

Example

assert( url_view( "http://www.example.com/index.htm#a%2D1" ).fragment() == "a-1" );

Complexity

Linear in this->fragment().size().

Exception Safety

Calls to allocate may throw. String tokens may throw exceptions.

BNF

fragment = *( pchar / "/" / "?" ) fragment-part = [ "#" fragment ]

Specification

Return Value

The fragment portion of the url.

Parameters

Name Description
token An optional string token to use. If this parameter is omitted, the function returns a new std::string.

See Also

encoded_fragment, has_fragment.

Return true if an authority is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_authority() const noexcept;


Description

This function returns true if the url contains an authority. The presence of an authority is denoted by a double slash ("//") at the beginning or after the scheme.

Example

assert( url_view( "http://www.example.com/index.htm" ).has_authority() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] absolute-URI = scheme ":" hier-part [ "?" query ] URI-reference = URI / relative-ref relative-ref = relative-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty ; (more...) relative-part = "//" authority path-abempty ; (more...)

Specification

Return Value

true if the url contains an authority.

See Also

authority, encoded_authority.

Return true if a fragment is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_fragment() const noexcept;


Description

This function returns true if the url contains a fragment. An empty fragment is distinct from no fragment.

Example

assert( url_view( "http://www.example.com/index.htm#anchor" ).has_fragment() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

Return Value

true if the url contains a fragment.

See Also

encoded_fragment, fragment.

Return true if a password is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_password() const noexcept;


Description

This function returns true if the userinfo is present and contains a password.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).has_password() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

true if the userinfo contains a password.

See Also

has_userinfo, encoded_password, encoded_user, encoded_userinfo, password, user, userinfo.

Return true if a port is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_port() const noexcept;


Description

This function returns true if an authority is present and contains a port.

Example

assert( url_view( "wss://www.example.com:443" ).has_port() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

authority = [ userinfo "@" ] host [ ":" port ] port = *DIGIT

Specification

Return Value

true if a port is present, false otherwise.

See Also

encoded_host_and_port, port, port_number.

Return true if a query is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_query() const noexcept;


Description

This function returns true if this contains a query. An empty query is distinct from having no query.

Example

assert( url_view( "/sql?id=42&col=name&page-size=20" ).has_query() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

true if a query is present.

See Also

encoded_params, encoded_query, params, query.

Return true a scheme is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_scheme() const noexcept;


Description

This function returns true if this contains a scheme.

Example

assert( url_view( "http://www.example.com" ).has_scheme() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] absolute-URI = scheme ":" hier-part [ "?" query ] scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Specification

Return Value

true if the url contains a scheme.

See Also

scheme, scheme_id.

Return true if a userinfo is present

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
has_userinfo() const noexcept;


Description

This function returns true if this contains a userinfo.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).has_userinfo() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

userinfo = user [ ":" [ password ] ] authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

true if the userinfo is present.

See Also

has_password, encoded_password, encoded_user, encoded_userinfo, password, user, userinfo.

Return the host

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
host(StringToken&& token = {}) const;


Description

This function returns the host portion of the authority as a string, or the empty string if there is no authority. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "https://www%2droot.example.com/" ).host() == "www-root.example.com" );

Complexity

Linear in this->host().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host address as a string.

Parameters

Name Description
token A string token customization
Return the host

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
host_address(StringToken&& token = {}) const;


Description

The value returned by this function depends on the type of host returned from the function host_type.

  • If the type is host_type::ipv4, then the IPv4 address string is returned.
  • If the type is host_type::ipv6, then the IPv6 address string is returned, without any enclosing brackets.
  • If the type is host_type::ipvfuture, then the IPvFuture address string is returned, without any enclosing brackets.
  • If the type is host_type::name, then the host name string is returned. Any percent-escapes in the string are decoded first.
  • If the type is host_type::none, then an empty string is returned.

Example

assert( url_view( "https://[1::6:c0a8:1]/" ).host_address() == "1::6:c0a8:1" );

Complexity

Linear in this->host_address().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host address as a string.

Parameters

Name Description
token A string token customization
Return the host IPv4 address

Synopsis

Declared in <boost/url/url_view_base.hpp>
ipv4_address
host_ipv4_address() const noexcept;


Description

If the host type is host_type::ipv4, this function returns the address as a value of type ipv4_address. Otherwise, if the host type is not an IPv4 address, it returns a default-constructed value which is equal to the unspecified address "0.0.0.0".

Example

assert( url_view( "http://127.0.0.1/index.htm?user=win95" ).host_ipv4_address() == ipv4_address( "127.0.0.1" ) );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

Return Value

The IPv4 address as a value of type ipv4_address.
Return the host IPv6 address

Synopsis

Declared in <boost/url/url_view_base.hpp>
ipv6_address
host_ipv6_address() const noexcept;


Description

If the host type is host_type::ipv6, this function returns the address as a value of type ipv6_address. Otherwise, if the host type is not an IPv6 address, it returns a default-constructed value which is equal to the unspecified address "0:0:0:0:0:0:0:0".

Example

assert( url_view( "ftp://[::1]/" ).host_ipv6_address() == ipv6_address( "::1" ) );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

Return Value

The IPv6 address as a value of type ipv6_address.
Return the host IPvFuture address

Synopsis

Declared in <boost/url/url_view_base.hpp>
core::string_view
host_ipvfuture() const noexcept;


Description

If the host type is host_type::ipvfuture, this function returns the address as a string. Otherwise, if the host type is not an IPvFuture address, it returns an empty string.

Example

assert( url_view( "http://[v1fe.d:9]/index.htm" ).host_ipvfuture() == "v1fe.d:9" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

Specification

Return Value

The IPvFuture address as a string.
Return the host name

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
host_name(StringToken&& token = {}) const;


Description

If the host type is host_type::name, this function returns the name as a string. Otherwise an empty string is returned. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "https://www%2droot.example.com/" ).host_name() == "www-root.example.com" );

Complexity

Linear in this->host_name().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPvFuture ) "]" reg-name = *( unreserved / pct-encoded / "-" / ".")

Specification

Return Value

The host name as a string.

Parameters

Name Description
token A string token customization.
Return the host type

Synopsis

Declared in <boost/url/url_view_base.hpp>
urls::host_type
host_type() const noexcept;


Description

This function returns one of the following constants representing the type of host present.

  • host_type::ipv4
  • host_type::ipv6
  • host_type::ipvfuture
  • host_type::name
  • host_type::none

When has_authority is false, the host type is host_type::none.

Example

assert( url_view( "https://192.168.0.1/local.htm" ).host_type() == host_type::ipv4 );

Complexity

Constant.

Exception Safety

Throws nothing.

Specification

Return Value

The type of host present.
Return true if the path is absolute

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
is_path_absolute() const noexcept;


Description

This function returns true if the path begins with a forward slash ('/').

Example

assert( url_view( "/path/to/file.txt" ).is_path_absolute() );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

true if the path is absolute, false otherwise.

See Also

encoded_path, encoded_segments. path, segments.

Return the query as a container of parameters

Synopses

Declared in <boost/url/url_view_base.hpp>
Return the query as a container of parameters
params_view
params() const noexcept;


» more...
params_view
params(encoding_opts opt) const noexcept;


» more...

Return Value

A bidirectional view of key/value pairs.

See Also

encoded_params, encoded_query, has_query, query.

Return the query as a container of parameters

Synopsis

Declared in <boost/url/url_view_base.hpp>
params_view
params() const noexcept;


Description

This function returns a bidirectional view of key/value pairs over the query. The returned view references the same underlying character buffer; ownership is not transferred. Any percent-escapes in strings returned when iterating the view are decoded first.

Example

params_view pv = url_view( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).params();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

A bidirectional view of key/value pairs.

See Also

encoded_params, encoded_query, has_query, query.

Synopsis

Declared in <boost/url/url_view_base.hpp>
params_view
params(encoding_opts opt) const noexcept;


Return the password

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
password(StringToken&& token = {}) const;


Description

If present, this function returns a string representing the password (which may be an empty string). Otherwise it returns an empty string. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).password() == "pass" );

Complexity

Linear in this->password().size().

Exception Safety

Calls to allocate may throw.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The password as a string.

Parameters

Name Description
token The string token to use.

See Also

has_password, has_userinfo, encoded_password, encoded_user, encoded_userinfo, user, userinfo.

Return the path

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
path(StringToken&& token = {}) const;


Description

This function returns the path as a string. The path may be empty. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "file:///Program%20Files/Games/config.ini" ).path() == "/Program Files/Games/config.ini" );

Complexity

Linear in this->path().size().

Exception Safety

Calls to allocate may throw.

BNF

path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = 0

Specification

Return Value

The path as a string.

Parameters

Name Description
token A string token to use for the result.

See Also

is_path_absolute, encoded_path, encoded_segments. segments.

Return a shared, persistent copy of the url

Synopsis

Declared in <boost/url/url_view_base.hpp>
std::shared_ptr<url_view const>
persist() const;


Description

This function returns a read-only copy of the url, with shared lifetime. The returned value owns (persists) the underlying string. The algorithm used to create the value minimizes the number of individual memory allocations, making it more efficient than when using direct standard library functions.

Example

std::shared_ptr< url_view const > sp; { std::string s( "http://example.com" ); url_view u( s ); // u references characters in s assert( u.data() == s.data() ); // same buffer sp = u.persist(); assert( sp->data() != s.data() ); // different buffer assert( sp->buffer() == s); // same contents // s is destroyed and thus u // becomes invalid, but sp remains valid. }

Complexity

Linear in this->size().

Exception Safety

Calls to allocate may throw.

Return Value

A shared pointer to a read-only url_view.
Return the port

Synopsis

Declared in <boost/url/url_view_base.hpp>
core::string_view
port() const noexcept;


Description

If present, this function returns a string representing the port (which may be empty). Otherwise it returns an empty string.

Example

assert( url_view( "http://localhost.com:8080" ).port() == "8080" );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

port = *DIGIT

Specification

Return Value

The port as a string.

See Also

encoded_host_and_port, has_port, port_number.

Return the port

Synopsis

Declared in <boost/url/url_view_base.hpp>
uint16_t
port_number() const noexcept;


Description

If a port is present and the numerical value is representable, it is returned as an unsigned integer. Otherwise, the number zero is returned.

Example

assert( url_view( "http://localhost.com:8080" ).port_number() == 8080 );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

port = *DIGIT

Specification

Return Value

The port number as an unsigned integer.

See Also

encoded_host_and_port, has_port, port.

Return the query

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
query(StringToken&& token = {}) const;


Description

If this contains a query, it is returned as a string (which may be empty). Otherwise, an empty string is returned. Any percent-escapes in the string are decoded first. When plus signs appear in the query portion of the url, they are converted to spaces automatically upon decoding. This behavior can be changed by setting decode options.

Example

assert( url_view( "/sql?id=42&name=jane%2Ddoe&page+size=20" ).query() == "id=42&name=jane-doe&page size=20" );

Complexity

Linear in this->query().size().

Exception Safety

Calls to allocate may throw.

BNF

query = *( pchar / "/" / "?" ) query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param )

Specification

Return Value

The query as a string.

Parameters

Name Description
token A token to use for the returned string.

See Also

encoded_params, encoded_query, has_query, params.

Return the scheme

Synopsis

Declared in <boost/url/url_view_base.hpp>
core::string_view
scheme() const noexcept;


Description

This function returns the scheme if it exists, without a trailing colon (':'). Otherwise it returns an empty string. Note that schemes are case-insensitive, and the canonical form is lowercased.

Example

assert( url_view( "http://www.example.com" ).scheme() == "http" );

Exception Safety

Throws nothing.

BNF

scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] absolute-URI = scheme ":" hier-part [ "?" query ]

Specification

Return Value

The scheme as a string.

See Also

has_scheme, scheme_id.

Return the scheme

Synopsis

Declared in <boost/url/url_view_base.hpp>
urls::scheme
scheme_id() const noexcept;


Description

This function returns a value which depends on the scheme in the url:

  • If the scheme is a well-known scheme, corresponding value from the enumeration urls::scheme is returned.
  • If a scheme is present but is not a well-known scheme, the value returned is urls::scheme::unknown.
  • Otherwise, if the scheme is absent the value returned is urls::scheme::none.

Example

assert( url_view( "wss://www.example.com/crypto.cgi" ).scheme_id() == scheme::wss );

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] absolute-URI = scheme ":" hier-part [ "?" query ] scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Specification

Return Value

The scheme as an enumeration value.

See Also

has_scheme, scheme.

Return the path as a container of segments

Synopsis

Declared in <boost/url/url_view_base.hpp>
segments_view
segments() const noexcept;


Description

This function returns a bidirectional view of strings over the path. The returned view references the same underlying character buffer; ownership is not transferred. Any percent-escapes in strings returned when iterating the view are decoded first.

Example

segments_view sv = url_view( "/path/to/file.txt" ).segments();

Complexity

Constant.

Exception Safety

Throws nothing.

BNF

path = [ "/" ] segment *( "/" segment )

Specification

Return Value

A bidirectional view of segments.

See Also

is_path_absolute, encoded_path, encoded_segments. path, segments_view.

Return the number of characters in the url

Synopsis

Declared in <boost/url/url_view_base.hpp>
std::size_t
size() const noexcept;


Description

This function returns the number of characters in the url's encoded string, not including any null terminator, if present.

Example

assert( url_view( "file:///Program%20Files" ).size() == 23 );

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The number of characters in the url.
Return the user

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
user(StringToken&& token = {}) const;


Description

If present, this function returns a string representing the user (which may be empty). Otherwise it returns an empty string. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).user() == "jane-doe" );

Complexity

Linear in this->user().size().

Exception Safety

Calls to allocate may throw.

BNF

userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" )

Specification

Return Value

The user as a string.

Parameters

Name Description
token The string token to use.

See Also

has_password, has_userinfo, encoded_password, encoded_user, encoded_userinfo, password, userinfo.

Return the userinfo

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
userinfo(StringToken&& token = {}) const;


Description

If present, this function returns a string representing the userinfo (which may be empty). Otherwise it returns an empty string. Any percent-escapes in the string are decoded first.

NOTE

This function uses the string token return type customization. Depending on the token passed, the return type and behavior of the function can be different. See string_token::return_string for more information.

Example

assert( url_view( "http://jane%2Ddoe:pass@example.com" ).userinfo() == "jane-doe:pass" );

Complexity

Linear in this->userinfo().size().

Exception Safety

Calls to allocate may throw.

BNF

userinfo = user [ ":" [ password ] ] authority = [ userinfo "@" ] host [ ":" port ]

Specification

Return Value

  • When called with no arguments, a value of type std::string is returned. Otherwise, the return type and meaning depends on the string token passed to the function.
  • The userinfo as a string.

Parameters

Name Description
token The string token to use.

See Also

has_password, has_userinfo, encoded_password, encoded_user, encoded_userinfo, password, user.

Return the IPv6 Zone ID

Synopsis

Declared in <boost/url/url_view_base.hpp>
template<string_token::StringToken StringToken = string_token::return_string>
StringToken::result_type
zone_id(StringToken&& token = {}) const;


Description

If the host type is host_type::ipv6, this function returns the Zone ID as a string. Otherwise an empty string is returned. Any percent-escapes in the string are decoded first.

Example

assert( url_view( "http://[fe80::1%25eth0]/" ).zone_id() == "eth0" );

Complexity

Linear in this->encoded_zone_id().size().

Exception Safety

Calls to allocate may throw.

BNF

host = IP-literal / IPv4address / reg-name IP-literal = "[" ( IPv6address / IPv6addrz / IPvFuture ) "]" ZoneID = 1*( unreserved / pct-encoded ) IPv6addrz = IPv6address "%25" ZoneID

Specification

Return Value

The Zone ID as a string.

Parameters

Name Description
token A string token customization.
Return the URL as a core::string_view

Synopsis

Declared in <boost/url/url_view_base.hpp>
operator core::string_view() const noexcept;


Description

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

A string view of the URL.
Return the maximum number of characters possible

Synopsis

Declared in <boost/url/url_view_base.hpp>
constexpr
static
std::size_t
max_size() noexcept;


Description

This represents the largest number of characters that are theoretically possible to represent in a url, not including any null terminator. In practice the actual possible size may be lower than this number.

Complexity

Constant.

Exception Safety

Throws nothing.

Return Value

The maximum number of characters.
Calculate a hash of the url

Synopsis

Declared in <boost/url/url_view_base.hpp>
std::size_t
digest(std::size_t salt = 0) const noexcept;


Description

This function calculates a hash of the url as if it were always normalized.

Complexity

Linear in this->size().

Exception Safety

Throws nothing.

Return Value

A hash value suitable for use in hash-based containers.

Parameters

Name Description
salt An initial value to add to the hash
Error codes returned the library

Synopsis

Declared in <boost/url/error.hpp>
enum class error : int;


Members

Name Description
success The operation completed successfully.
illegal_null Null encountered in pct-encoded.
illegal_reserved_char Illegal reserved character in encoded string.
non_canonical A grammar element was not in canonical form.
bad_pct_hexdig Bad hexadecimal digit.
incomplete_encoding The percent-encoded sequence is incomplete.
missing_pct_hexdig Missing hexadecimal digit.
no_space No space in output buffer
not_a_base The URL is not a base URL
Identifies the type of host in a URL.

Synopsis

Declared in <boost/url/host_type.hpp>
enum class host_type : int;


Members

Name Description
none No host is specified.
name A host is specified by reg-name.
ipv4 A host is specified by ipv4_address.
ipv6 A host is specified by ipv6_address.
ipvfuture A host is specified by IPvFuture.

Description

Values of this type are returned by URL views and containers to indicate the type of host present in a URL.

Identifies a known URL scheme

Synopsis

Declared in <boost/url/scheme.hpp>
enum class scheme : unsigned short;


Members

Name Description
none Indicates that no scheme is present
unknown Indicates the scheme is not a well-known scheme
ftp File Transfer Protocol (FTP)
file File URI Scheme
http The Hypertext Transfer Protocol URI Scheme
https The Secure Hypertext Transfer Protocol URI Scheme
ws The WebSocket URI Scheme
wss The Secure WebSocket URI Scheme

Non-Member Functions

Name Description
default_portReturn the default port for a known scheme
string_to_schemeReturn the known scheme for a non-normalized string, if known
to_stringReturn the normalized string for a known scheme

Description

Specification

Designate a named argument for a replacement field

Synopsis

Declared in <boost/url/format.hpp>
template<class T>
named_arg<T>
arg(
    core::string_view name,
    T const& arg);


Description

Construct a named argument for a format URL string that contains named replacement fields.

The function parameters should be convertible to an implementation defined type able to store the name and a reference to any type potentially used as a format argument.

Example

The function should be used to designate a named argument for a replacement field in a format URL string.

assert(format("user/{id}", arg("id", 1)).buffer() == "user/1");

Return Value

A temporary object with reference semantics for a named argument

Parameters

Name Description
name The format argument name
arg The format argument value

See Also

format, format_to.

Return the default port for a known scheme

Synopsis

Declared in <boost/url/scheme.hpp>
uint16_t
default_port(scheme s) noexcept;


Description

This function returns the default port for the known schemes. If the value does not represent a known scheme or the scheme does not represent a protocol, the function returns zero.

The following ports are returned by the function:

  • scheme::ftp = 21
  • scheme::http, scheme::ws = 80
  • scheme::https, scheme::wss = 443

Return Value

An integer with the default port number

Parameters

Name Description
s The known scheme constant
encode overloads

Synopses

Declared in <boost/url/encode.hpp>
Return a percent-encoded string
template<
    string_token::StringToken StringToken = string_token::return_string,
    grammar::CharSet CS>
StringToken::result_type
encode(
    core::string_view s,
    CS const& allowed,
    encoding_opts opt = {},
    StringToken&& token = {}) noexcept;


» more... Apply percent-encoding to a string
template<grammar::CharSet CS>
std::size_t
encode(
    char* dest,
    std::size_t size,
    core::string_view s,
    CS const& allowed,
    encoding_opts opt = {});


» more...

Return Value

  • The string
  • The number of characters written to the destination buffer.

Parameters

Name Description
s The string to encode.
allowed The set of characters that is not percent-encoded.
opt The options for encoding. If this parameter is omitted, the default options are used.
token A string token.
dest The destination buffer to write to.
size The number of writable characters pointed to by dest. If this is less than encoded_size(s), the result is truncated.

See Also

encode, encoded_size, encoding_opts,

encode, encoded_size, make_pct_string_view.

Return a percent-encoded string

Synopsis

Declared in <boost/url/encode.hpp>
template<
    string_token::StringToken StringToken = string_token::return_string,
    grammar::CharSet CS>
StringToken::result_type
encode(
    core::string_view s,
    CS const& allowed,
    encoding_opts opt = {},
    StringToken&& token = {}) noexcept;


Description

This function applies percent-encoding to the string using the given options and character set, and returns the result as a string when called with default arguments.

Example

encoding_opts opt; opt.space_as_plus = true; std::string s = encode( "My Stuff", opt, pchars ); assert( s == "My+Stuff" );

Exception Safety

Calls to allocate may throw.

Specification

Return Value

The string

Parameters

Name Description
s The string to encode.
allowed The set of characters that is not percent-encoded.
opt The options for encoding. If this parameter is omitted, the default options are used.
token A string token.

See Also

encode, encoded_size, encoding_opts,

Apply percent-encoding to a string

Synopsis

Declared in <boost/url/encode.hpp>
template<grammar::CharSet CS>
std::size_t
encode(
    char* dest,
    std::size_t size,
    core::string_view s,
    CS const& allowed,
    encoding_opts opt = {});


Description

This function applies percent-encoding to the string using the given options and character set. The destination buffer provided by the caller is used to store the result, which may be truncated if there is insufficient space.

Example

char buf[100]; assert( encode( buf, sizeof(buf), "Program Files", pchars ) == 15 );

Exception Safety

Throws nothing.

Specification

Return Value

The number of characters written to the destination buffer.

Parameters

Name Description
dest The destination buffer to write to.
size The number of writable characters pointed to by dest. If this is less than encoded_size(s), the result is truncated.
s The string to encode.
allowed The set of characters that is not percent-encoded.
opt The options for encoding. If this parameter is omitted, the default options are used.

See Also

encode, encoded_size, make_pct_string_view.

Return the buffer size needed for percent-encoding

Synopsis

Declared in <boost/url/encode.hpp>
template<grammar::CharSet CS>
std::size_t
encoded_size(
    core::string_view s,
    CS const& allowed,
    encoding_opts opt = {}) noexcept;


Description

This function returns the exact number of bytes necessary to store the result of applying percent-encoding to the string using the given options and character set. No encoding is actually performed.

Example

assert( encoded_size( "My Stuff", pchars ) == 10 );

Exception Safety

Throws nothing.

Specification

Return Value

The number of bytes needed, excluding any null terminator.

Parameters

Name Description
s The string to measure.
allowed The set of characters that is not percent-encoded.
opt The options for encoding. If this parameter is omitted, the default options are be used.

See Also

encode, encoding_opts, make_pct_string_view.

Format arguments into a URL

Synopses

Declared in <boost/url/format.hpp>
Format arguments into a URL
url
format(
    core::string_view fmt,
    std::initializer_list<format_arg> args);


» more... Format arguments into a URL
template<std::convertible_to<format_arg>... Args>
url
format(
    core::string_view fmt,
    Args...&&... args);


» more...

Exceptions

Name Thrown on
system_error fmt contains an invalid format string and the result contains an invalid URL after replacements are applied.

Return Value

A URL holding the formatted result.

Parameters

Name Description
fmt The format URL string.
args Arguments to be formatted.

See Also

format_to.

format_to, arg.

Format arguments into a URL

Synopsis

Declared in <boost/url/format.hpp>
url
format(
    core::string_view fmt,
    std::initializer_list<format_arg> args);


Description

Format arguments according to the format URL string into a url.

This overload allows type-erased arguments to be passed as an initializer_list, which is mostly convenient for named parameters.

All arguments must be convertible to a implementation defined type able to store a type-erased reference to any valid format argument.

The rules for a format URL string are the same as for a std::format_string, where replacement fields are delimited by curly braces.

The URL components to which replacement fields belong are identified before replacement is applied and any invalid characters for that formatted argument are percent-escaped.

Hence, the delimiters between URL components, such as :, //, ?, and #, should be included in the URL format string. Likewise, a format string with a single "{}" is interpreted as a path and any replacement characters invalid in this component will be encoded to form a valid URL.

Example

assert(format("user/{id}", {{"id", 1}}).buffer() == "user/1");

Preconditions

All replacement fields must be valid and the resulting URL should be valid after arguments are formatted into the URL.

Because any invalid characters for a URL component are encoded by this function, only replacements in the scheme and port components might be invalid, as these components do not allow percent-encoding of arbitrary characters.

BNF

replacement_field ::= "{" [arg_id] [":" (format_spec | chrono_format_spec)] "}" arg_id ::= integer | identifier integer ::= digit+ digit ::= "0"..."9" identifier ::= id_start id_continue* id_start ::= "a"..."z" | "A"..."Z" | "_" id_continue ::= id_start | digit

Specification

Exceptions

Name Thrown on
system_error fmt contains an invalid format string and the result contains an invalid URL after replacements are applied.

Return Value

A URL holding the formatted result.

Parameters

Name Description
fmt The format URL string.
args Arguments to be formatted.

See Also

format_to.

Format arguments into a URL

Synopsis

Declared in <boost/url/format.hpp>
template<std::convertible_to<format_arg>... Args>
url
format(
    core::string_view fmt,
    Args...&&... args);


Description

Format arguments according to the format URL string into a url.

The rules for a format URL string are the same as for a std::format_string, where replacement fields are delimited by curly braces.

The URL components to which replacement fields belong are identified before replacement is applied and any invalid characters for that formatted argument are percent-escaped.

Hence, the delimiters between URL components, such as :, //, ?, and #, should be included in the URL format string. Likewise, a format string with a single "{}" is interpreted as a path and any replacement characters invalid in this component will be encoded to form a valid URL.

Example

assert(format("{}", "Hello world!").buffer() == "Hello%20world%21");

Preconditions

All replacement fields must be valid and the resulting URL should be valid after arguments are formatted into the URL.

Because any invalid characters for a URL component are encoded by this function, only replacements in the scheme and port components might be invalid, as these components do not allow percent-encoding of arbitrary characters.

BNF

replacement_field ::= "{" [arg_id] [":" (format_spec | chrono_format_spec)] "}" arg_id ::= integer | identifier integer ::= digit+ digit ::= "0"..."9" identifier ::= id_start id_continue* id_start ::= "a"..."z" | "A"..."Z" | "_" id_continue ::= id_start | digit

Specification

Exceptions

Name Thrown on
system_error fmt contains an invalid format string and the result contains an invalid URL after replacements are applied.

Return Value

A URL holding the formatted result.

Parameters

Name Description
fmt The format URL string.
args Arguments to be formatted.

See Also

format_to, arg.

Format arguments into a URL

Synopses

Declared in <boost/url/format.hpp>
Format arguments into a URL
void
format_to(
    url_base& u,
    core::string_view fmt,
    std::initializer_list<format_arg> args);


» more... Format arguments into a URL
template<std::convertible_to<format_arg>... Args>
void
format_to(
    url_base& u,
    core::string_view fmt,
    Args...&&... args);


» more...

Exceptions

Name Thrown on
system_error fmt contains an invalid format string and u contains an invalid URL after replacements are applied.

Parameters

Name Description
u An object that derives from url_base.
fmt The format URL string.
args Arguments to be formatted.

See Also

format.

Format arguments into a URL

Synopsis

Declared in <boost/url/format.hpp>
void
format_to(
    url_base& u,
    core::string_view fmt,
    std::initializer_list<format_arg> args);


Description

Format arguments according to the format URL string into a url_base.

This overload allows type-erased arguments to be passed as an initializer_list, which is mostly convenient for named parameters.

All arguments must be convertible to a implementation defined type able to store a type-erased reference to any valid format argument.

The rules for a format URL string are the same as for a std::format_string, where replacement fields are delimited by curly braces.

The URL components to which replacement fields belong are identified before replacement is applied and any invalid characters for that formatted argument are percent-escaped.

Hence, the delimiters between URL components, such as :, //, ?, and #, should be included in the URL format string. Likewise, a format string with a single "{}" is interpreted as a path and any replacement characters invalid in this component will be encoded to form a valid URL.

Example

static_url<30> u; format_to(u, "user/{id}", {{"id", 1}}) assert(u.buffer() == "user/1");

Preconditions

All replacement fields must be valid and the resulting URL should be valid after arguments are formatted into the URL.

Because any invalid characters for a URL component are encoded by this function, only replacements in the scheme and port components might be invalid, as these components do not allow percent-encoding of arbitrary characters.

Exception Safety

Strong guarantee.

BNF

replacement_field ::= "{" [arg_id] [":" (format_spec | chrono_format_spec)] "}" arg_id ::= integer | identifier integer ::= digit+ digit ::= "0"..."9" identifier ::= id_start id_continue* id_start ::= "a"..."z" | "A"..."Z" | "_" id_continue ::= id_start | digit

Specification

Exceptions

Name Thrown on
system_error fmt contains an invalid format string and u contains an invalid URL after replacements are applied.

Parameters

Name Description
u An object that derives from url_base.
fmt The format URL string.
args Arguments to be formatted.

See Also

format.

Format arguments into a URL

Synopsis

Declared in <boost/url/format.hpp>
template<std::convertible_to<format_arg>... Args>
void
format_to(
    url_base& u,
    core::string_view fmt,
    Args...&&... args);


Description

Format arguments according to the format URL string into a url_base.

The rules for a format URL string are the same as for a std::format_string, where replacement fields are delimited by curly braces.

The URL components to which replacement fields belong are identified before replacement is applied and any invalid characters for that formatted argument are percent-escaped.

Hence, the delimiters between URL components, such as :, //, ?, and #, should be included in the URL format string. Likewise, a format string with a single "{}" is interpreted as a path and any replacement characters invalid in this component will be encoded to form a valid URL.

Example

static_url<30> u; format(u, "{}", "Hello world!"); assert(u.buffer() == "Hello%20world%21");

Preconditions

All replacement fields must be valid and the resulting URL should be valid after arguments are formatted into the URL.

Because any invalid characters for a URL component are encoded by this function, only replacements in the scheme and port components might be invalid, as these components do not allow percent-encoding of arbitrary characters.

Exception Safety

Strong guarantee.

BNF

replacement_field ::= "{" [arg_id] [":" (format_spec | chrono_format_spec)] "}" arg_id ::= integer | identifier integer ::= digit+ digit ::= "0"..."9" identifier ::= id_start id_continue* id_start ::= "a"..."z" | "A"..."Z" | "_" id_continue ::= id_start | digit

Specification

Exceptions

Name Thrown on
system_error fmt contains an invalid format string and u contains an invalid URL after replacements are applied.

Parameters

Name Description
u An object that derives from url_base.
fmt The format URL string.
args Arguments to be formatted.

See Also

format.

Return a valid percent-encoded string

Synopsis

Declared in <boost/url/pct_string_view.hpp>
system::result<pct_string_view>
make_pct_string_view(core::string_view s) noexcept;


Description

If s is a valid percent-encoded string, the function returns the buffer as a valid view which may be used to perform decoding or measurements. Otherwise the result contains an error code. Upon success, the returned view references the original character buffer; Ownership is not transferred.

Complexity

Linear in s.size().

Exception Safety

Throws nothing.

Return Value

On success, the valid percent-encoded string.

Parameters

Name Description
s The string to validate.
Return a reference to a parsed URL string

Synopsis

Declared in <boost/url/parse.hpp>
system::result<url_view>
parse_absolute_uri(core::string_view s);


Description

This function parses a string according to the grammar below and returns a view referencing the passed string upon success, else returns an error. Ownership of the string is not transferred; the caller is responsible for ensuring that the lifetime of the character buffer extends until the view is no longer being accessed.

Example

system::result< url_view > rv = parse_absolute_uri( "http://example.com/index.htm?id=1" );

BNF

absolute-URI = scheme ":" hier-part [ "?" query ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty

Specification

Exceptions

Name Thrown on
std::length_error s.size() > url_view::max_size

Return Value

A view to the parsed URL

Parameters

Name Description
s The string to parse

See Also

parse_origin_form, parse_relative_ref, parse_uri, parse_uri_reference, url_view.

Parse an authority

Synopsis

Declared in <boost/url/authority_view.hpp>
system::result<authority_view>
parse_authority(core::string_view s) noexcept;


Description

This function parses a string according to the authority grammar below, and returns an authority_view referencing the string. Ownership of the string is not transferred; the caller is responsible for ensuring that the lifetime of the string extends until the view is no longer being accessed.

BNF

authority = [ userinfo "@" ] host [ ":" port ] userinfo = user [ ":" [ password ] ] user = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT

Exception Safety

Throws nothing.

Specification

Return Value

A view to the parsed authority

Parameters

Name Description
s The string to parse

See Also

authority_view.

Return an IPv4 address from an IP address string in dotted decimal form

Synopsis

Declared in <boost/url/ipv4_address.hpp>
system::result<ipv4_address>
parse_ipv4_address(core::string_view s) noexcept;


Return Value

The parsed address, or an error code.

Parameters

Name Description
s The string to parse.
Parse a string containing an IPv6 address.

Synopsis

Declared in <boost/url/ipv6_address.hpp>
system::result<ipv6_address>
parse_ipv6_address(core::string_view s) noexcept;


Description

This function attempts to parse the string as an IPv6 address and returns a result containing the address upon success, or an error code if the string does not contain a valid IPv6 address.

Exception Safety

Throws nothing.

Return Value

A result containing the address.

Parameters

Name Description
s The string to parse.
Return a reference to a parsed URL string

Synopsis

Declared in <boost/url/parse.hpp>
system::result<url_view>
parse_origin_form(core::string_view s);


Description

This function parses a string according to the grammar below and returns a view referencing the passed string upon success, else returns an error. Ownership of the string is not transferred; the caller is responsible for ensuring that the lifetime of the character buffer extends until the view is no longer being accessed.

Example

system::result< url_view > = parse_origin_form( "/index.htm?layout=mobile" );

BNF

origin-form = absolute-path [ "?" query ] absolute-path = 1*( "/" segment )

Specification

Exceptions

Name Thrown on
std::length_error s.size() > url_view::max_size

Return Value

A view to the parsed URL

Parameters

Name Description
s The string to parse

See Also

parse_absolute_uri, parse_relative_ref, parse_uri, parse_uri_reference, url_view.

Parse a string and return an encoded segment view

Synopsis

Declared in <boost/url/parse_path.hpp>
system::result<segments_encoded_view>
parse_path(core::string_view s) noexcept;


Description

This function parses the string and returns the corresponding path object if the string is valid, otherwise returns an error.

BNF

path = [ "/" ] segment *( "/" segment )

Exception Safety

No-throw guarantee.

Specification

Return Value

A valid view on success, otherwise an error code.

Parameters

Name Description
s The string to parse

See Also

segments_encoded_view.

Parse a string and return an encoded params view

Synopsis

Declared in <boost/url/parse_query.hpp>
system::result<params_encoded_view>
parse_query(core::string_view s) noexcept;


Description

This function parses the string and returns the corresponding params object if the string is valid, otherwise returns an error.

BNF

query = *( pchar / "/" / "?" )

Exception Safety

No-throw guarantee.

Specification

Return Value

A valid view on success, otherwise an error code.

Parameters

Name Description
s The string to parse

See Also

params_encoded_view.

Return a reference to a parsed URL string

Synopsis

Declared in <boost/url/parse.hpp>
system::result<url_view>
parse_relative_ref(core::string_view s);


Description

This function parses a string according to the grammar below and returns a view referencing the passed string upon success, else returns an error. Ownership of the string is not transferred; the caller is responsible for ensuring that the lifetime of the character buffer extends until the view is no longer being accessed.

Example

system::result< url_view > = parse_relative_ref( "images/dot.gif?v=hide#a" );

BNF

relative-ref = relative-part [ "?" query ] [ "#" fragment ] relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-abempty / path-empty

Specification

Exceptions

Name Thrown on
std::length_error s.size() > url_view::max_size

Return Value

A view to the parsed URL

Parameters

Name Description
s The string to parse

See Also

parse_absolute_uri, parse_origin_form, parse_uri, parse_uri_reference, url_view.

Return a reference to a parsed URL string

Synopsis

Declared in <boost/url/parse.hpp>
system::result<url_view>
parse_uri(core::string_view s);


Description

This function parses a string according to the grammar below and returns a view referencing the passed string upon success, else returns an error. Ownership of the string is not transferred; the caller is responsible for ensuring that the lifetime of the character buffer extends until the view is no longer being accessed.

Example

system::result< url_view > = parse_uri( "https://www.example.com/index.htm?id=guest#s1" );

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty

Specification

Exceptions

Name Thrown on
std::length_error s.size() > url_view::max_size

Return Value

A boost::system::result containing a value or an error

Parameters

Name Description
s The string to parse

See Also

parse_absolute_uri, parse_origin_form, parse_relative_ref, parse_uri_reference, url_view.

Return a reference to a parsed URL string

Synopsis

Declared in <boost/url/parse.hpp>
system::result<url_view>
parse_uri_reference(core::string_view s);


Description

This function parses a string according to the grammar below and returns a view referencing the passed string upon success, else returns an error. Ownership of the string is not transferred; the caller is responsible for ensuring that the lifetime of the character buffer extends until the view is no longer being accessed.

Example

system::result< url_view > = parse_uri_reference( "ws://echo.example.com/?name=boost#demo" );

BNF

URI-reference = URI / relative-ref URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-abempty / path-empty

Specification

Exceptions

Name Thrown on
std::length_error s.size() > url_view::max_size

Return Value

A view to the parsed URL

Parameters

Name Description
s The string to parse

See Also

parse_absolute_uri, parse_origin_form, parse_relative_ref, parse_uri, url_view.

Rule for a string with percent-encoded escapes

Synopsis

Declared in <boost/url/rfc/pct_encoded_rule.hpp>
template<grammar::CharSet CS>
constexpr
/* implementation-defined */
pct_encoded_rule(CS const& cs) noexcept;


Description

This function returns a rule which matches a percent-encoded string, permitting characters in the string which are also in the specified character set to be used unescaped.

Value Type

using value_type = pct_string_view;

Example

Rules are used with the function grammar::parse.

// pchar = unreserved / pct-encoded / sub-delims / ":" / "@" system::result< pct_string_view > rv = grammar::parse( "Program%20Files", pct_encoded_rule( pchars ) );

BNF

pct-encoded = "%" HEXDIG HEXDIG

Specification

Return Value

A rule object.

Parameters

Name Description
cs The character set indicating which characters are allowed without escapes. Any character which is not in this set must be escaped, or else parsing returns an error.

See Also

grammar::parse, pchars, pct_string_view.

Resolve a URL reference against a base URL

Synopsis

Declared in <boost/url/url_base.hpp>
system::result<void>
resolve(
    url_view_base const& base,
    url_view_base const& ref,
    url_base& dest);


Description

This function attempts to resolve a URL reference ref against the base URL base in a manner similar to that of a web browser resolving an anchor tag.

The base URL must satisfy the URI grammar. In other words, it must contain a scheme.

Relative references are only usable when in the context of a base absolute URI. This process of resolving a relative reference within the context of a base URI is defined in detail in rfc3986 (see below).

The resolution process works as if the relative reference is appended to the base URI and the result is normalized.

Given the input base URL, this function resolves the relative reference as if performing the following steps:

  • Ensure the base URI has at least a scheme
  • Normalizing the reference path
  • Merge base and reference paths
  • Normalize the merged path

This function places the result of the resolution into dest, which can be any of the url containers that inherit from url_base.

If an error occurs, the contents of dest is unspecified and ec is set.

NOTE

Abnormal hrefs where the number of ".." segments exceeds the number of segments in the base path are handled by including the unmatched ".." segments in the result, as described in .

Example

url dest; system::error_code ec; resolve("/one/two/three", "four", dest, ec); assert( dest.str() == "/one/two/four" ); resolve("http://example.com/", "/one", dest, ec); assert( dest.str() == "http://example.com/one" ); resolve("http://example.com/one", "/two", dest, ec); assert( dest.str() == "http://example.com/two" ); resolve("http://a/b/c/d;p?q", "g#s", dest, ec); assert( dest.str() == "http://a/b/c/g#s" );

BNF

absolute-URI = scheme ":" hier-part [ "?" query ]

Exception Safety

Basic guarantee. Calls to allocate may throw.

Specification

Return Value

An empty boost::system::result upon success, otherwise an error code if !base.has_scheme().

Parameters

Name Description
base The base URL to resolve against.
ref The URL reference to resolve.
dest The container where the result is written, upon success.

See Also

url, url_view.

Return the known scheme for a non-normalized string, if known

Synopsis

Declared in <boost/url/scheme.hpp>
scheme
string_to_scheme(core::string_view s) noexcept;


Description

If the string does not identify a known scheme, the value scheme::unknown is returned.

BNF

scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

Specification

Return Value

The known scheme

Parameters

Name Description
s The string holding the scheme
Swap

Synopsis

Declared in <boost/url/url.hpp>
void
swap(
    url& v0,
    url& v1) noexcept;


Description

Exchanges the contents of v0 with another v1. All views, iterators and references remain valid.

If &v0 == &v1, this function call has no effect.

Example

url u1( "https://www.example.com" ); url u2( "https://www.boost.org" ); std::swap(u1, u2); assert(u1 == "https://www.boost.org" ); assert(u2 == "https://www.example.com" );

Effects

v0.swap( v1 );

Complexity

Constant

Exception Safety

Throws nothing

Parameters

Name Description
v0 The first object to swap
v1 The second object to swap

See Also

url::swap

Return the normalized string for a known scheme

Synopsis

Declared in <boost/url/scheme.hpp>
core::string_view
to_string(scheme s) noexcept;


Return Value

A string representing the known scheme

Parameters

Name Description
s The known scheme constant
Stream insertion operators

Synopses

Declared in <boost/url/authority_view.hpp>
Format the address to an output stream
std::ostream&
operator<<(
    std::ostream& os,
    ipv6_address const& addr);


» more... Format the address to an output stream.
std::ostream&
operator<<(
    std::ostream& os,
    ipv4_address const& addr);


» more... Format the string with percent-decoding applied to the output stream
std::ostream&
operator<<(
    std::ostream& os,
    decode_view const& s);


» more... Format the url to the output stream
std::ostream&
operator<<(
    std::ostream& os,
    url_view_base const& u);


» more... Format the encoded authority to the output stream
std::ostream&
operator<<(
    std::ostream& os,
    authority_view const& a);


» more... Format to an output stream
std::ostream&
operator<<(
    std::ostream& os,
    params_encoded_base const& qp);


» more... Format to an output stream
std::ostream&
operator<<(
    std::ostream& os,
    params_base const& qp);


» more... Format to an output stream
std::ostream&
operator<<(
    std::ostream& os,
    segments_encoded_base const& ps);


» more... Format to an output stream
std::ostream&
operator<<(
    std::ostream& os,
    segments_base const& ps);


» more...

Return Value

  • The output stream, for chaining.
  • The output stream.
  • A reference to the output stream, for chaining
  • A reference to the output stream.

Parameters

Name Description
os The output stream to write to.
addr The address to write.
s The decoded view to write
u The url to write.
a The URL to write
qp The params to write
ps The object to format.
Format the address to an output stream

Synopsis

Declared in <boost/url/ipv6_address.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    ipv6_address const& addr);


Description

This hidden friend function writes the address to an output stream using standard notation.

Format the address to an output stream

This function writes the address to an output stream using standard notation.

Return Value

The output stream, for chaining.

Parameters

Name Description
os The output stream to write to.
addr The address to write.
Format the address to an output stream.

Synopsis

Declared in <boost/url/ipv4_address.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    ipv4_address const& addr);


Description

IPv4 addresses written to output streams are written in their dotted decimal format.

Format the address to an output stream.

IPv4 addresses written to output streams are written in their dotted decimal format.

Format the address to an output stream.

IPv4 addresses written to output streams are written in their dotted decimal format.

Return Value

The output stream.

Parameters

Name Description
os The output stream.
addr The address to format.
Format the string with percent-decoding applied to the output stream

Synopsis

Declared in <boost/url/decode_view.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    decode_view const& s);


Description

This hidden friend function serializes the decoded view to the output stream.

Format the string with percent-decoding applied to the output stream

This function serializes the decoded view to the output stream.

Return Value

A reference to the output stream, for chaining

Parameters

Name Description
os The output stream to write to
s The decoded view to write
Format the url to the output stream

Synopsis

Declared in <boost/url/url_view_base.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    url_view_base const& u);


Description

This function serializes the url to the specified output stream. Any percent-escapes are emitted as-is; no decoding is performed.

Example

url_view u( "http://www.example.com/index.htm" ); std::stringstream ss; ss << u; assert( ss.str() == "http://www.example.com/index.htm" );

Effects

return os << u.buffer();

Complexity

Linear in u.buffer().size()

Exception Safety

Basic guarantee.

Format the url to the output stream

This function serializes the url to the specified output stream. Any percent-escapes are emitted as-is; no decoding is performed.

Example

url_view u( "http://www.example.com/index.htm" ); std::stringstream ss; ss << u; assert( ss.str() == "http://www.example.com/index.htm" );

Effects

return os << u.buffer();

Complexity

Linear in u.buffer().size()

Exception Safety

Basic guarantee.

Return Value

A reference to the output stream, for chaining

Parameters

Name Description
os The output stream to write to.
u The url to write.
Format the encoded authority to the output stream

Synopsis

Declared in <boost/url/authority_view.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    authority_view const& a);


Description

This hidden friend function serializes the encoded URL to the output stream.

Example

authority_view a( "www.example.com" ); std::cout << a << std::endl;

Format the encoded authority to the output stream

This function serializes the encoded URL to the output stream.

Example

authority_view a( "www.example.com" ); std::cout << a << std::endl;

Return Value

A reference to the output stream, for chaining

Parameters

Name Description
os The output stream to write to
a The URL to write
Format to an output stream

Synopsis

Declared in <boost/url/params_encoded_base.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    params_encoded_base const& qp);


Description

Any percent-escapes are emitted as-is; no decoding is performed.

Complexity

Linear in ps.buffer().size().

Effects

return os << ps.buffer();

Return Value

A reference to the output stream, for chaining

Parameters

Name Description
os The output stream to write to
qp The params to write
Format to an output stream

Synopsis

Declared in <boost/url/params_base.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    params_base const& qp);


Description

Any percent-escapes are emitted as-is; no decoding is performed.

Complexity

Linear in ps.buffer().size().

Effects

return os << ps.buffer();

Return Value

A reference to the output stream, for chaining

Parameters

Name Description
os The output stream to write to
qp The parameters to write
Format to an output stream

Synopsis

Declared in <boost/url/segments_encoded_base.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    segments_encoded_base const& ps);


Description

Any percent-escapes are emitted as-is; no decoding is performed.

Complexity

Linear in ps.buffer().size().

Effects

return os << ps.buffer();

Return Value

A reference to the output stream.

Parameters

Name Description
os The output stream to write to.
ps The object to format.
Format to an output stream

Synopsis

Declared in <boost/url/segments_base.hpp>
std::ostream&
operator<<(
    std::ostream& os,
    segments_base const& ps);


Description

Any percent-escapes are emitted as-is; no decoding is performed.

Complexity

Linear in ps.buffer().size().

Effects

return os << ps.buffer();

Return Value

A reference to the output stream.

Parameters

Name Description
os The output stream to write to.
ps The segments to write.
Equality operators

Synopses

Declared in <boost/url/authority_view.hpp>
Return true if two addresses are equal
bool
operator==(
    ipv6_address const& a1,
    ipv6_address const& a2) noexcept;


» more... Return true if two addresses are equal
bool
operator==(
    ipv4_address const& a1,
    ipv4_address const& a2) noexcept;


» more... Compare two decode views for equality
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator==(
    S const& lhs,
    decode_view const& rhs) noexcept;


» more... Compare two decode views for equality
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator==(
    decode_view const& lhs,
    S const& rhs) noexcept;


» more... Compare two decode views for equality
constexpr
bool
operator==(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


» more... Return the result of comparing two URLs
bool
operator==(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


» more...
bool
operator==(
    iterator const& it0,
    iterator const& it1) noexcept;


» more... Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
bool
operator==(
    authority_view const& a0,
    authority_view const& a1) noexcept;


» more...

Return Value

  • true if the addresses are equal
  • true if the addresses are equal, otherwise false.
  • true if decoded lhs is equal to the decoded rhs
  • true if u0 == u1
  • true if a0 == a1, otherwise false

Parameters

Name Description
a1 The first address to compare.
a2 The second address to compare.
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
u0 The first url to compare
u1 The second url to compare
a0 The first authority to compare
Return true if two addresses are equal

Synopsis

Declared in <boost/url/ipv6_address.hpp>
bool
operator==(
    ipv6_address const& a1,
    ipv6_address const& a2) noexcept;


Return Value

true if the addresses are equal

Parameters

Name Description
a1 The first address to compare.
a2 The second address to compare.
Return true if two addresses are equal

Synopsis

Declared in <boost/url/ipv4_address.hpp>
bool
operator==(
    ipv4_address const& a1,
    ipv4_address const& a2) noexcept;


Return Value

true if the addresses are equal, otherwise false.

Parameters

Name Description
a1 The first address to compare.
a2 The second address to compare.
Compare two decode views for equality

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator==(
    S const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for equality

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator==(
    decode_view const& lhs,
    S const& rhs) noexcept;


Return Value

true if decoded lhs is equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for equality

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
bool
operator==(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Return the result of comparing two URLs

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
operator==(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


Description

The URLs are compared component by component as if they were first normalized.

Example

url_view u0( "http://www.a.com/index.htm" ); url_view u1( "http://www.a.com/index.htm" ); assert( u0 == u1 );

Effects

url a(u0); a.normalize(); url b(u1); b.normalize(); return a.buffer() == b.buffer();

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing

Specification

Return Value

true if u0 == u1

Parameters

Name Description
u0 The first url to compare
u1 The second url to compare
Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
operator==(
    authority_view const& a0,
    authority_view const& a1) noexcept;


Description

Complexity

Linear in min( a0.size(), a1.size() )

Exception Safety

Throws nothing

Return Value

true if a0 == a1, otherwise false

Parameters

Name Description
a0 The first authority to compare
a1 The second authority to compare
Inequality operators

Synopses

Declared in <boost/url/authority_view.hpp>
Return true if two addresses are not equal
bool
operator!=(
    ipv6_address const& a1,
    ipv6_address const& a2) noexcept;


» more... Return true if two addresses are not equal
bool
operator!=(
    ipv4_address const& a1,
    ipv4_address const& a2) noexcept;


» more... Compare two decode views for inequality
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator!=(
    S const& lhs,
    decode_view const& rhs) noexcept;


» more... Compare two decode views for inequality
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator!=(
    decode_view const& lhs,
    S const& rhs) noexcept;


» more... Compare two decode views for inequality
constexpr
bool
operator!=(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


» more... Return the result of comparing two URLs
bool
operator!=(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


» more...
bool
operator!=(
    iterator const& it0,
    iterator const& it1) noexcept;


» more... Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
bool
operator!=(
    authority_view const& a0,
    authority_view const& a1) noexcept;


» more...

Return Value

  • true if the addresses are not equal
  • true if the addresses are not equal, otherwise false.
  • true if decoded lhs is not equal to the decoded rhs
  • true if u0 != u1
  • true if a0 != a1, otherwise false

Parameters

Name Description
a1 The first address to compare.
a2 The second address to compare.
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
u0 The first url to compare
u1 The second url to compare
a0 The first authority to compare
Return true if two addresses are not equal

Synopsis

Declared in <boost/url/ipv6_address.hpp>
bool
operator!=(
    ipv6_address const& a1,
    ipv6_address const& a2) noexcept;


Return Value

true if the addresses are not equal

Parameters

Name Description
a1 The first address to compare.
a2 The second address to compare.
Return true if two addresses are not equal

Synopsis

Declared in <boost/url/ipv4_address.hpp>
bool
operator!=(
    ipv4_address const& a1,
    ipv4_address const& a2) noexcept;


Return Value

true if the addresses are not equal, otherwise false.

Parameters

Name Description
a1 The first address to compare.
a2 The second address to compare.
Compare two decode views for inequality

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator!=(
    S const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is not equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for inequality

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator!=(
    decode_view const& lhs,
    S const& rhs) noexcept;


Return Value

true if decoded lhs is not equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for inequality

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
bool
operator!=(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is not equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Return the result of comparing two URLs

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
operator!=(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


Description

The URLs are compared component by component as if they were first normalized.

Example

url_view u0( "http://www.a.com/index.htm" ); url_view u1( "http://www.b.com/index.htm" ); assert( u0 != u1 );

Effects

url a(u0); a.normalize(); url b(u1); b.normalize(); return a.buffer() != b.buffer();

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing

Specification

Return Value

true if u0 != u1

Parameters

Name Description
u0 The first url to compare
u1 The second url to compare
Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
operator!=(
    authority_view const& a0,
    authority_view const& a1) noexcept;


Description

Complexity

Linear in min( a0.size(), a1.size() )

Exception Safety

Throws nothing

Return Value

true if a0 != a1, otherwise false

Parameters

Name Description
a0 The first authority to compare
a1 The second authority to compare
Less-than operators

Synopses

Declared in <boost/url/authority_view.hpp>
Compare two decode views for less than
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<(
    S const& lhs,
    decode_view const& rhs) noexcept;


» more... Compare two decode views for less than
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<(
    decode_view const& lhs,
    S const& rhs) noexcept;


» more... Compare two decode views for less than
constexpr
bool
operator<(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


» more... Return the result of comparing two URLs
bool
operator<(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


» more... Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
bool
operator<(
    authority_view const& a0,
    authority_view const& a1) noexcept;


» more...

Return Value

  • true if decoded lhs is less than to the decoded rhs
  • true if u0 < u1
  • true if a0 < a1, otherwise false

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
u0 The first url to compare
u1 The second url to compare
a0 The first authority to compare
a1 The second authority to compare
Compare two decode views for less than

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<(
    S const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is less than to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for less than

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<(
    decode_view const& lhs,
    S const& rhs) noexcept;


Return Value

true if decoded lhs is less than to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for less than

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
bool
operator<(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is less than to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Return the result of comparing two URLs

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
operator<(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


Description

The URLs are compared component by component as if they were first normalized.

Example

url_view u0( "http://www.a.com/index.htm" ); url_view u1( "http://www.b.com/index.htm" ); assert( u0 < u1 );

Effects

url a(u0); a.normalize(); url b(u1); b.normalize(); return a.buffer() < b.buffer();

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing

Specification

Return Value

true if u0 < u1

Parameters

Name Description
u0 The first url to compare
u1 The second url to compare
Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
operator<(
    authority_view const& a0,
    authority_view const& a1) noexcept;


Description

Complexity

Linear in min( a0.size(), a1.size() )

Exception Safety

Throws nothing

Return Value

true if a0 < a1, otherwise false

Parameters

Name Description
a0 The first authority to compare
a1 The second authority to compare
Less-than-or-equal operators

Synopses

Declared in <boost/url/authority_view.hpp>
Compare two decode views for less than or equal
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<=(
    S const& lhs,
    decode_view const& rhs) noexcept;


» more... Compare two decode views for less than or equal
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<=(
    decode_view const& lhs,
    S const& rhs) noexcept;


» more... Compare two decode views for less than or equal
constexpr
bool
operator<=(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


» more... Return the result of comparing two URLs
bool
operator<=(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


» more... Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
bool
operator<=(
    authority_view const& a0,
    authority_view const& a1) noexcept;


» more...

Return Value

  • true if decoded lhs is less than or equal to the decoded rhs
  • true if u0 <= u1
  • true if a0 <= a1, otherwise false

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
u0 The first url to compare
u1 The second url to compare
a0 The first authority to compare
a1 The second authority to compare
Compare two decode views for less than or equal

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<=(
    S const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is less than or equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for less than or equal

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator<=(
    decode_view const& lhs,
    S const& rhs) noexcept;


Return Value

true if decoded lhs is less than or equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for less than or equal

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
bool
operator<=(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is less than or equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Return the result of comparing two URLs

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
operator<=(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


Description

The URLs are compared component by component as if they were first normalized.

Example

url_view u0( "http://www.b.com/index.htm" ); url_view u1( "http://www.b.com/index.htm" ); assert( u0 <= u1 );

Effects

url a(u0); a.normalize(); url b(u1); b.normalize(); return a.buffer() <= b.buffer();

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing

Specification

Return Value

true if u0 <= u1

Parameters

Name Description
u0 The first url to compare
u1 The second url to compare
Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
operator<=(
    authority_view const& a0,
    authority_view const& a1) noexcept;


Description

Complexity

Linear in min( a0.size(), a1.size() )

Exception Safety

Throws nothing

Return Value

true if a0 <= a1, otherwise false

Parameters

Name Description
a0 The first authority to compare
a1 The second authority to compare
Greater-than operators

Synopses

Declared in <boost/url/authority_view.hpp>
Compare two decode views for greater than
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>(
    S const& lhs,
    decode_view const& rhs) noexcept;


» more... Compare two decode views for greater than
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>(
    decode_view const& lhs,
    S const& rhs) noexcept;


» more... Compare two decode views for greater than
constexpr
bool
operator>(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


» more... Return the result of comparing two URLs
bool
operator>(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


» more... Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
bool
operator>(
    authority_view const& a0,
    authority_view const& a1) noexcept;


» more...

Return Value

  • true if decoded lhs is greater than to the decoded rhs
  • true if u0 > u1
  • true if a0 > a1, otherwise false

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
u0 The first url to compare
u1 The second url to compare
a0 The first authority to compare
a1 The second authority to compare
Compare two decode views for greater than

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>(
    S const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is greater than to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for greater than

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>(
    decode_view const& lhs,
    S const& rhs) noexcept;


Return Value

true if decoded lhs is greater than to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for greater than

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
bool
operator>(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is greater than to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Return the result of comparing two URLs

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
operator>(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


Description

The URLs are compared component by component as if they were first normalized.

Example

url_view u0( "http://www.b.com/index.htm" ); url_view u1( "http://www.a.com/index.htm" ); assert( u0 > u1 );

Effects

url a(u0); a.normalize(); url b(u1); b.normalize(); return a.buffer() > b.buffer();

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing

Specification

Return Value

true if u0 > u1

Parameters

Name Description
u0 The first url to compare
u1 The second url to compare
Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
operator>(
    authority_view const& a0,
    authority_view const& a1) noexcept;


Description

Complexity

Linear in min( a0.size(), a1.size() )

Exception Safety

Throws nothing

Return Value

true if a0 > a1, otherwise false

Parameters

Name Description
a0 The first authority to compare
a1 The second authority to compare
Greater-than-or-equal operators

Synopses

Declared in <boost/url/authority_view.hpp>
Compare two decode views for greater than or equal
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>=(
    S const& lhs,
    decode_view const& rhs) noexcept;


» more... Compare two decode views for greater than or equal
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>=(
    decode_view const& lhs,
    S const& rhs) noexcept;


» more... Compare two decode views for greater than or equal
constexpr
bool
operator>=(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


» more... Return the result of comparing two URLs
bool
operator>=(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


» more... Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.
bool
operator>=(
    authority_view const& a0,
    authority_view const& a1) noexcept;


» more...

Return Value

  • true if decoded lhs is greater than or equal to the decoded rhs
  • true if u0 >= u1
  • true if a0 >= a1, otherwise false

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
u0 The first url to compare
u1 The second url to compare
a0 The first authority to compare
a1 The second authority to compare
Compare two decode views for greater than or equal

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>=(
    S const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is greater than or equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for greater than or equal

Synopsis

Declared in <boost/url/decode_view.hpp>
template<std::convertible_to<core::string_view> S>
constexpr
bool
operator>=(
    decode_view const& lhs,
    S const& rhs) noexcept;


Return Value

true if decoded lhs is greater than or equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Compare two decode views for greater than or equal

Synopsis

Declared in <boost/url/decode_view.hpp>
constexpr
bool
operator>=(
    decode_view const& lhs,
    decode_view const& rhs) noexcept;


Return Value

true if decoded lhs is greater than or equal to the decoded rhs

Parameters

Name Description
lhs The left-hand-side decode view to compare
rhs The right-hand-side decode view to compare
Return the result of comparing two URLs

Synopsis

Declared in <boost/url/url_view_base.hpp>
bool
operator>=(
    url_view_base const& u0,
    url_view_base const& u1) noexcept;


Description

The URLs are compared component by component as if they were first normalized.

Example

url_view u0( "http://www.a.com/index.htm" ); url_view u1( "http://www.a.com/index.htm" ); assert( u0 >= u1 );

Effects

url a(u0); a.normalize(); url b(u1); b.normalize(); return a.buffer() >= b.buffer();

Complexity

Linear in min( u0.size(), u1.size() )

Exception Safety

Throws nothing

Specification

Return Value

true if u0 >= u1

Parameters

Name Description
u0 The first url to compare
u1 The second url to compare
Return the result of comparing two authorities. The authorities are compared component by component as if they were first normalized.

Synopsis

Declared in <boost/url/authority_view.hpp>
bool
operator>=(
    authority_view const& a0,
    authority_view const& a1) noexcept;


Description

Complexity

Linear in min( a0.size(), a1.size() )

Exception Safety

Throws nothing

Return Value

true if a0 >= a1, otherwise false

Parameters

Name Description
a0 The first authority to compare
a1 The second authority to compare
Rule for absolute-URI

Synopsis

Declared in <boost/url/rfc/absolute_uri_rule.hpp>
inline constexpr /* implementation-defined */ absolute_uri_rule = {};


Description

Value Type

using value_type = url_view;

Example

Rules are used with the function grammar::parse.

system::result< url_view > rv = grammar::parse( "http://example.com/index.htm?id=1", absolute_uri_rule );

BNF

absolute-URI = scheme ":" hier-part [ "?" query ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty

Specification

See Also

grammar::parse, parse_absolute_uri, url_view.

Rule for authority

Synopsis

Declared in <boost/url/rfc/authority_rule.hpp>
constexpr /* implementation-defined */ authority_rule = {};


Description

Value Type

using value_type = authority_view;

Example

Rules are used with the function grammar::parse.

system::result< authority_view > rv = grammar::parse( "user:pass@example.com:8080", authority_rule );

BNF

authority = [ userinfo "@" ] host [ ":" port ]

Specification

See Also

authority_view, grammar::parse, parse_authority.

The gen-delims character set

Synopsis

Declared in <boost/url/rfc/gen_delim_chars.hpp>
constexpr grammar::lut_chars gen_delim_chars = ":/?#[]@";


Description

Example

Character sets are used with rules and the functions grammar::find_if and grammar::find_if_not.

system::result< decode_view > rv = grammar::parse( "Program%20Files", pct_encoded_rule( gen_delim_chars ) );

BNF

gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"

Specification

See Also

grammar::find_if, grammar::find_if_not, grammar::parse, pct_encoded_rule.

Ignore case when comparing

Synopsis

Declared in <boost/url/ignore_case.hpp>
inline constexpr /* implementation-defined */ ignore_case = {};


Description

This value may be optionally passed to functions accepting a parameter of type ignore_case_param to indicate that comparisons should be case-insensitive.

Rule for an IP version 4 style address

Synopsis

Declared in <boost/url/rfc/ipv4_address_rule.hpp>
constexpr /* implementation-defined */ ipv4_address_rule = {};


Description

Value Type

using value_type = ipv4_address;

Example

Rules are used with the function grammar::parse.

system::result< ipv4_address > rv = grammar::parse( "192.168.0.1", ipv4_address_rule );

BNF

IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255

Specification

See Also

ipv4_address, parse_ipv4_address, grammar::parse.

Rule for An IP version 6 style address

Synopsis

Declared in <boost/url/rfc/ipv6_address_rule.hpp>
constexpr /* implementation-defined */ ipv6_address_rule = {};


Description

Value Type

using value_type = ipv6_address;

Example

Rules are used with the function grammar::parse.

system::result< ipv6_address > rv = grammar::parse( "2001:0db8:85a3:0000:0000:8a2e:0370:7334", ipv6_address_rule );

BNF

IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" ls32 = ( h16 ":" h16 ) / IPv4address ; least-significant 32 bits of address h16 = 1*4HEXDIG ; 16 bits of address represented in hexadecimal

Specification

See Also

ipv6_address, parse_ipv6_address, grammar::parse.

Constant indicating no value in a param

Synopsis

Declared in <boost/url/param.hpp>
constexpr no_value_t no_value = {};


Rule for origin-form

Synopsis

Declared in <boost/url/rfc/origin_form_rule.hpp>
inline constexpr /* implementation-defined */ origin_form_rule = {};


Description

This appears in the HTTP/1 request-line grammar.

Value Type

using value_type = url_view;

Example

Rules are used with the function grammar::parse.

system::result< url_view > rv = grammar::parse( "/index.htm?layout=mobile", origin_form_rule );

BNF

origin-form = absolute-path [ "?" query ] absolute-path = 1*( "/" segment )

Specification

See Also

grammar::parse, parse_origin_form, url_view.

The path character set

Synopsis

Declared in <boost/url/rfc/pchars.hpp>
constexpr auto pchars = unreserved_chars + sub_delim_chars + ':' + '@';


Description

Example

Character sets are used with rules and the functions grammar::find_if and grammar::find_if_not.

system::result< decode_view > rv = grammar::parse( "Program%20Files", pchars );

BNF

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

Specification

See Also

grammar::find_if, grammar::find_if_not, grammar::parse, pct_encoded_rule.

Rule for a query string

Synopsis

Declared in <boost/url/rfc/query_rule.hpp>
constexpr /* implementation-defined */ query_rule = {};


Description

Value Type

using value_type = params_encoded_view;

Example

Rules are used with the function grammar::parse.

system::result< params_encoded_view > rv = grammar::parse( "format=web&id=42&compact", query_rule );

BNF

query = *( pchar / "/" / "?" ) query-params = [ query-param ] *( "&" query-param ) query-param = key [ "=" value ] key = *qpchar value = *( qpchar / "=" ) qpchar = unreserved / pct-encoded / "!" / "$" / "'" / "(" / ")" / "*" / "+" / "," / ";" / ":" / "@" / "/" / "?"

Specification

See Also

grammar::parse, params_encoded_view.

Rule for relative-ref

Synopsis

Declared in <boost/url/rfc/relative_ref_rule.hpp>
constexpr /* implementation-defined */ relative_ref_rule = {};


Description

Value Type

using value_type = url_view;

Example

Rules are used with the function grammar::parse.

system::result< url_view > rv = grammar::parse( "images/dot.gif?v=hide#a", relative_ref_rule );

BNF

relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

See Also

grammar::parse, parse_relative_ref, url_view.

The reserved character set

Synopsis

Declared in <boost/url/rfc/reserved_chars.hpp>
constexpr auto reserved_chars = ~unreserved_chars;


Description

Example

Character sets are used with rules and the functions grammar::find_if and grammar::find_if_not.

system::result< decode_view > rv = grammar::parse( "Program%20Files", pct_encoded_rule( reserved_chars ) );

Specification

See Also

grammar::find_if, grammar::find_if_not, grammar::parse, pct_encoded_rule.

The sub-delims character set

Synopsis

Declared in <boost/url/rfc/sub_delim_chars.hpp>
constexpr grammar::lut_chars sub_delim_chars = "!$&()*+,;=\x27";


Description

Example

Character sets are used with rules and the functions grammar::find_if and grammar::find_if_not.

system::result< decode_view > = grammar::parse( "Program%20Files", pct_encoded_rule( sub_delim_chars ) );

BNF

sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

Specification

See Also

grammar::find_if, grammar::find_if_not, grammar::parse, pct_encoded_rule.

The unreserved character set

Synopsis

Declared in <boost/url/rfc/unreserved_chars.hpp>
constexpr grammar::lut_chars unreserved_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz"
    "0123456789"
    "-._~";


Description

Example

Character sets are used with rules and the functions grammar::find_if and grammar::find_if_not.

system::result< decode_view > rv = grammar::parse( "Program%20Files", pct_encoded_rule( unreserved_chars ) );

BNF

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

Specification

See Also

grammar::find_if, grammar::find_if_not, grammar::parse, pct_encoded_rule.

Rule for URI-reference

Synopsis

Declared in <boost/url/rfc/uri_reference_rule.hpp>
constexpr /* implementation-defined */ uri_reference_rule = {};


Description

Value Type

using value_type = url_view;

Example

Rules are used with the function grammar::parse.

system::result< url_view > rv = grammar::parse( "ws://echo.example.com/?name=boost#demo", uri_reference_rule );

BNF

URI-reference = URI / relative-ref URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] relative-ref = relative-part [ "?" query ] [ "#" fragment ]

Specification

See Also

grammar::parse, parse_uri_reference, url_view.

Rule for URI

Synopsis

Declared in <boost/url/rfc/uri_rule.hpp>
constexpr /* implementation-defined */ uri_rule = {};


Description

Value Type

using value_type = url_view;

Example

Rules are used with the function grammar::parse.

system::result< url_view > rv = grammar::parse( "https://www.example.com/index.htm?id=guest#s1", uri_rule );

BNF

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Specification

See Also

grammar::parse, parse_uri, url_view.

Created with MrDocs