方法

GLibUriParamsIterinit

自:2.66

声明 [source]

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

描述 [source]

初始化属性/值对迭代器。

迭代器保留对 paramsseparators 参数的指针,因此这些变量必须比迭代器存在更长的时间,并且在迭代过程中不应被修改。

如果通过 flags 传递了 G_URI_PARAMS_WWW_FORM,则参数字符串中的加号字符将在输出中替换为空格。例如,foo=bar+baz 将给出具有值 bar baz 的属性 foo。这在 Web 上通常使用(仅在 httpshttp 方案中),但现在已被废弃,转而编码空格为 20

与 g_uri_parse_params() 不同,如果将 G_URI_PARAMS_CASE_INSENSITIVE 传递给 g_uri_params_iter_init() 的 flags,则它将没有效果。调用者负责执行自己的不区分大小写的比较。

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

自:2.66

参数

params

类型: const gchar*

包含 attribute=value 参数的 %-编码字符串。

该方法由方法的调用者拥有。
值是一个以 NUL 终止的 UTF-8 字符串。
length

类型: gssize

params 的长度,如果它是空终止的则返回 -1

separators

类型: const gchar*

参数之间的分隔字节字符集。(通常是 &,但有时是 ; 或两者都是 &;)。请注意,此函数在字节上工作,而不是在字符上工作,因此它不能用于界定除了 ASCII 字符之外的 UTF-8 字符串。您可能传递一个空的集合,在这种情况下将不会发生分割。

该方法由方法的调用者拥有。
值是一个以 NUL 终止的 UTF-8 字符串。
flags

类型: GUriParamsFlags

用于修改处理参数方式的标记。