:relfileprefix: ../../../
[#boost-urls-url-set_userinfo]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::xref:boost/urls/url.adoc[pass:[url]]::set_userinfo


Set the userinfo


=== Synopsis

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

[source,cpp,subs="verbatim,macros,-callouts"]
----
xref:boost/urls/url.adoc[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
xref:boost/urls/url_view_base/has_password.adoc[has_password]
returns
true. Otherwise,

* If there is no colon, the user is
set to the string. The function
xref:boost/urls/url_view_base/has_password.adoc[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.
[,cpp]
----
assert( url( "http://example.com" ).set_userinfo( "user:pass" ).encoded_user() == "user" );
----

=== Linear in `this-&gt;size() + s.size()`.

=== Strong guarantee.

Calls to allocate may throw.
[,cpp]
----
userinfo      = [ [ user ] [ ':' password ] ]

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

* link:https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1[            3.2.1. User Information (rfc3986)]





=== Parameters

|===
| Name | Description 

| *s*
| 
The string to set.

|===




=== See Also


xref:boost/urls/url_base/remove_userinfo.adoc[remove_userinfo]
,
xref:boost/urls/url_base/set_encoded_userinfo.adoc[set_encoded_userinfo]
.



