GLib/GTK2 中的字符串列表

String list in GLib/GTK2

如何使用 GLib/GTK2 中的字符串列表?在我使用 Qt 库中的 QStringList 之前,现在查找如何在 GLib/GTK2 中做同样的事情。我知道有 GList 和 GString 数据类型。但我不明白如何正确使用它。不确定使用关键字 'glib gstring glist' 尝试 google 对我没有帮助。我找不到好的教程。

实际上我现在需要一些基本功能。创建列表,在循环中填充字符串,检查列表是否包含一些字符串和清除列表。就这些了。

在 Qt 中我可以做到

QStringList list;
list << "first" << "second" << "third";
for (int i = 0; i < list.length(); ++i) {
    QString str = list.at(i);
    if (str == "second") {
        doSomeActions();
    }
}
list.clear();

GLib 中的哪个类似物?在实际应用程序中,字符串将被动态分配。所以在 clear() 中必须释放所有指针。

Gnome 开发人员文档为您提供了所有问题的答案。对于GList,说明中已经给出了例子

https://developer.gnome.org/glib/2.56/glib-Doubly-Linked-Lists.html

https://developer.gnome.org/glib/2.56/glib-Strings.html

因为你不是真的在问一个具体的问题,我不能给你一个具体的答案。阅读并试用给定的资源后,如果有任何不清楚的地方,请随时再次询问。

带有 GList 的 QT 片段看起来像这样(动态分配):

GList *list = NULL;

g_list_append(list, g_strdup("first"));
g_list_append(list, g_strdup("second"));
g_list_append(list, g_strdup("third"));
for (GList *l = list; l != NULL; l = l->next) {
    if (g_strcmp(l->data, "second") == 0) {
        doSomeActions();
    }
}

g_list_free_full(list, g_free);