Список строк в GLib / GTK2 - PullRequest
       16

Список строк в GLib / GTK2

0 голосов
/ 20 октября 2018

Как работать со списком строк в GLib / GTK2?Раньше я работал с QStringList в библиотеке Qt, а теперь посмотрим, как сделать то же самое в GLib / GTK2.Я знаю, что существуют типы данных GList и GString.Но я не понимаю, как правильно с этим работать.Неуверенная попытка Google с ключевыми словами "glib gstring glist" мне не поможет.Я не могу найти хороший учебник.

В самом деле мне сейчас нужны некоторые основные функции.Создать список, заполнить строками в цикле, проверить, что список содержит некоторую строку и очистить список.Вот и все.

В 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() все указатели должны быть освобождены.

1 Ответ

0 голосов
/ 20 октября 2018

Документация разработчика Gnome дает ответы на все ваши вопросы.Для GList уже есть примеры, приведенные в описаниях.

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

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

Поскольку вы на самом деле не задаете конкретный вопрос, я могу 'не дать вам конкретного ответа.Не стесняйтесь спрашивать еще раз, если что-то неясно после прочтения и опробования указанных ресурсов.

Фрагмент QT с GList будет выглядеть примерно так (с динамическим размещением):

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);
...