方法
GLibVariantIternext
since: 2.24
声明 [src]
gboolean
g_variant_iter_next (
GVariantIter* iter,
const gchar* format_string,
...
)
描述 [src]
获取容器中的下一个项目,并根据 format_string
解包到变量参数列表中,返回 TRUE
。
如果没有更多项可用,则返回 FALSE
。
假设此函数的变量参数列表中给出的所有指针都指向未初始化的内存。释放解包过程返回的所有值是调用者的责任。
以下是一个使用 g_variant_iter_next() 的内存管理示例
// Iterates a dictionary of type 'a{sv}'
void
iterate_dictionary (GVariant *dictionary)
{
GVariantIter iter;
GVariant *value;
gchar *key;
g_variant_iter_init (&iter, dictionary);
while (g_variant_iter_next (&iter, "{sv}", &key, &value))
{
g_print ("Item '%s' has type '%s'\n", key,
g_variant_get_type_string (value));
// must free data for ourselves
g_variant_unref (value);
g_free (key);
}
}
有关在处理循环时对 C 程序员更方便的解决方案,请参阅 g_variant_iter_loop()。
format_string
确定了用于解包值时使用的 C 类型,也确定值是否复制或借用。
请参阅 GVariant
格式字符串部分。
Available since: 2.24
此方法不是直接可用到语言绑定的。