:relfileprefix: ../../../
[#boost-urls-params_encoded_base-find-03]

= xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::xref:boost/urls/params_encoded_base.adoc[pass:[params_encoded_base]]::find


Find a matching key


== Synopsis

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

[source,cpp,subs="verbatim,macros,-callouts"]
----
xref:boost/urls/params_encoded_base/iterator.adoc[iterator]
find(
    xref:boost/urls/pct_string_view.adoc[pct_string_view] key,
    xref:boost/urls/ignore_case_param.adoc[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
[,cpp]
----
assert( url_view( "?first=John&last=Doe" ).encoded_params().find( "First", ignore_case )->value == "John" );
----

=== Effects
[,cpp]
----
return this->find( this->begin(), key, ic );
----

=== Complexity

Linear in `this-&gt;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
xref:boost/urls/ignore_case.adoc[ignore_case]
is passed
here, the comparison is
case-insensitive.

|===




