方法
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
-
类型:
gssize
params 的长度,如果它是空终止的则返回
-1
。 separators
-
类型:
const gchar*
参数之间的分隔字节字符集。(通常是
&
,但有时是;
或两者都是&;
)。请注意,此函数在字节上工作,而不是在字符上工作,因此它不能用于界定除了 ASCII 字符之外的 UTF-8 字符串。您可能传递一个空的集合,在这种情况下将不会发生分割。该方法由方法的调用者拥有。 值是一个以 NUL 终止的 UTF-8 字符串。 flags
-
类型:
GUriParamsFlags
用于修改处理参数方式的标记。