boost::urls::params_encoded_ref::set :: Boost Libraries Documentation

# boost::urls::params_encoded_ref::set

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.

| 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.

Created with MrDocs