...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Format arguments into a URL.
Defined in header <boost/url/format.hpp>
void format_to( url_base& u, core::string_view fmt, std::initializer_list< see-below > args);
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.
static_url<30> u; format_to(u, "user/{id}" , {{ "id" , 1}}) assert(u.buffer() == "user/1" );
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.
Strong guarantee.
Name |
Description |
---|---|
|
An object that derives from |
|
The format URL string. |
|
Arguments to be formatted. |
Type |
Thrown On |
---|---|
|
|
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
Convenience header <boost/url.hpp>