| Home | Libraries | People | FAQ | More

##### url_base::set_encoded_userinfo

Set the userinfo.

###### Synopsis

    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.

###### Remarks

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.

###### Exceptions

Type | Thrown On
--- | ---
`system_error` | `s` contains an invalid percent-encoding.

###### Parameters

Name | Description
--- | ---
`s` | The string to set.

###### BNF

    userinfo      = [ [ user ] [ ':' password ] ]

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

###### Specification

- 3.2.1. User Information (rfc3986)

###### See Also

`remove_userinfo`, `set_userinfo`.