我通过D-Bus上的函数调用得到一个字符串数组,如下所示。我使用GLib解析返回值。下面的代码大大简化了。我可以使用g_variant_iter_loop
和iterator
读取返回的每个字符串。
如何首先确定数组中返回了多少个字符串?
在阅读实际的字符串之前,我需要先根据返回的字符串数量动态分配内存。这看起来很简单,但是我一直在网上寻找最好的方法来完成这项工作,但没有成功。提前感谢。
GVariant * val_returned = g_dbus_connection_call_sync(connection,
SERVICE,
OBJECT,
IFACE,
"GetStringsArray",
NULL,
G_VARIANT_TYPE("(as)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
&err);
g_autoptr(GVariantIter) iterator = NULL;
g_variant_get(val_returned, "(as)", &iterator);
// Need to determine how many strings have been read into the array
// Use g_variant_iter_loop to retrieve each string as a gchar*
1条答案
按热度按时间oewdyzsn1#
呼叫
g_variant_iter_n_children (iterator)
。