方法
GLibUriParamsIterinit
自:2.66
声明 [source]
void
g_uri_params_iter_init (
GUriParamsIter* iter,
const gchar* params,
gssize length,
const gchar* separators,
GUriParamsFlags flags
)
描述 [source]
初始化属性/值对迭代器。
迭代器保留对 params 和 separators 参数的指针,因此这些变量必须比迭代器存在更长的时间,并且在迭代过程中不应被修改。
如果通过 flags 传递了 G_URI_PARAMS_WWW_FORM,则参数字符串中的加号字符将在输出中替换为空格。例如,foo=bar+baz 将给出具有值 bar baz 的属性 foo。这在 Web 上通常使用(仅在 https 和 http 方案中),但现在已被废弃,转而编码空格为 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-
类型:
gssizeparams 的长度,如果它是空终止的则返回
-1。 separators-
类型:
const gchar*参数之间的分隔字节字符集。(通常是
&,但有时是;或两者都是&;)。请注意,此函数在字节上工作,而不是在字符上工作,因此它不能用于界定除了 ASCII 字符之外的 UTF-8 字符串。您可能传递一个空的集合,在这种情况下将不会发生分割。该方法由方法的调用者拥有。 值是一个以 NUL 终止的 UTF-8 字符串。 flags-
类型:
GUriParamsFlags用于修改处理参数方式的标记。