### Method

# GLib UriParamsIter init

since: 2.66

#### Declaration

    void
    g_uri_params_iter_init (
      GUriParamsIter* iter,
      const gchar* params,
      gssize length,
      const gchar* separators,
      GUriParamsFlags flags
    )

#### Description

Initializes an attribute/value pair iterator.

The iterator keeps pointers to the `params` and `separators` arguments, those variables must thus outlive the iterator and not be modified during the iteration.

If `G_URI_PARAMS_WWW_FORM` is passed in `flags`, `+` characters in the param string will be replaced with spaces in the output. For example, `foo=bar+baz` will give attribute `foo` with value `bar baz`. This is commonly used on the web (the `https` and `http` schemes only), but is deprecated in favour of the equivalent of encoding spaces as `20`.

Unlike with g_uri_parse_params(), `G_URI_PARAMS_CASE_INSENSITIVE` has no effect if passed to `flags` for g_uri_params_iter_init(). The caller is responsible for doing their own case-insensitive comparisons.

    GUriParamsIter iter;
    GError *error = NULL;
    gchar *unowned_attr, *unowned_value;

    g_uri_params_iter_init (&iter, "foo=bar&baz=bar&Foo=frob&baz=bar2", -1, "&", G_URI_PARAMS_NONE);
    while (g_uri_params_iter_next (&iter, &unowned_attr, &unowned_value, &error))
      {
        g_autofree gchar *attr = g_steal_pointer (&unowned_attr);
        g_autofree gchar *value = g_steal_pointer (&unowned_value);
        // do something with attr and value; this code will be called 4 times
        // for the params string in this example: once with attr=foo and value=bar,
        // then with baz/bar, then Foo/frob, then baz/bar2.
      }
    if (error)
      // handle parsing error

Available since: 2.66

#### Parameters

`params`

  Type: `const gchar*`

  A `%`-encoded string containing `attribute=value` parameters.

  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`length`

  Type: `gssize`

  The length of `params`, or `-1` if it is nul-terminated.

`separators`

  Type: `const gchar*`

  The separator byte character set between parameters. (usually `&`, but sometimes `;` or both `&;`). Note that this function works on bytes not characters, so it can’t be used to delimit UTF-8 strings for anything but ASCII characters. You may pass an empty set, in which case no splitting will occur.

  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`flags`

  Type: `GUriParamsFlags`

  Flags to modify the way the parameters are handled.