C语言 GLib -获取通过D-Bus返回的数组中的字符串数

juud5qan  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(153)

我通过D-Bus上的函数调用得到一个字符串数组,如下所示。我使用GLib解析返回值。下面的代码大大简化了。我可以使用g_variant_iter_loopiterator读取返回的每个字符串。
如何首先确定数组中返回了多少个字符串?
在阅读实际的字符串之前,我需要先根据返回的字符串数量动态分配内存。这看起来很简单,但是我一直在网上寻找最好的方法来完成这项工作,但没有成功。提前感谢。

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*
oewdyzsn

oewdyzsn1#

呼叫g_variant_iter_n_children (iterator)

相关问题