κατάλογος String σε GLib / GTK2

ψήφοι
1

Πώς να συνεργαστεί με τη λίστα των χορδών στην GLib / GTK2; Πριν συνεργαστεί με QStringList στη βιβλιοθήκη Qt και τώρα αναζήτηση πώς να κάνουν τα ίδια πράγματα σε GLib / GTK2. Ξέρω ότι υπάρχουν GList και GString τύπους δεδομένων. Αλλά εγώ δεν καταλαβαίνω πώς να λειτουργεί σωστά με αυτό. Αβέβαιος προσπαθεί να google με «ετοιμόλογος 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()όλους τους δείκτες πρέπει να απελευθερωθεί.

Δημοσιεύθηκε 20/10/2018 στις 12:32
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
3

Η τεκμηρίωση του έργου 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);
Απαντήθηκε 20/10/2018 στις 12:46
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more