Combobox füllen

Guten Tag zusammen!

Folgendes Problem:

Ich schreibe gerade eine C/C++-Anwendung mit GUI.
Ich verwende als Grafikbibliothek GTK.
Mein Problem ist es, dass ich eine Combobox füllen
möchte und zwar mit den Daten aus einer Textdatei:

Die Textdatei ist so aufgebaut, das in jeder Zeile ein Namen steht:

namen.dat:

Mueller
Huber
.
.
.

Das Auslesen der Textdatei ist kein Problem, jedoch
bekomme ich die Daten nicht in die Combobox...

Anlegen der Combobox und füllen der GList... so funktioniert es ohne Probleme:
Code:
GtkWidget *combo;
GList *glist = NULL;

combo = gtk_combo_new();

glist = g_list_append (glist, "String 1");
glist = g_list_append (glist, "String 2");

gtk_combo_set_popdown_strings(GTK_COMBO(combo), glist);
Jedoch wenn ich nun statt "String 1" oder "String 2",
also konstante Strings, eine Variable verwenden möchte
(Muss ich ja, da ich ja aus der Textdatei lese) bringt
er eine Fehlermeldung zu diesem Code:

Code:
GtkWidget *combo;
GList *glist = NULL;

combo = gtk_combo_new();

ifstream f;
string s;

f.open("name.dat", ios::in);

while(!f.eof())
{
	getline(f, s);
	glist = g_list_append (glist, s);
}

f.close();

gtk_combo_set_popdown_strings(GTK_COMBO(combo), glist);

Fehlermeldung:
Konvertierung des Parameters 2 von 'std::string' in 'gpointer' nicht möglich

Fehler tritt HIER in Zeile 14 auf...

Ich hoffe mir kann jemand helfen...
Suche schon den ganzen Tag nach einer Lösung.
Wenn jemand weiß wie man es machen muss,
bzw. einen Vorschlag hat, bin ich sehr dankbar!
 
Ich habe noch nie mit der GTK-Bibiliothek zu tun gehabt, aber g_list_append scheint einen gpointer (die GTK-Version eines Pointers) statt einer String-Klasse zu erwarten.

Probiers doch mal mit "s.c_str()". Das sollte einen Pointer auf das interne Char-Array der Klasse zurückgeben. Eventuell musst du das noch als gpointer casten.
 
Hey, danke es klappt... Also nochmal für Leute die das selbe Problem haben:

NICHT SO:

Code:
string s("String 1");
glist = g_list_append (glist, s);

SONDERN SO:
Code:
string s("String 1");
glist = g_list_append (glist, gpointer(s.c_str()));

Nochmal vielen Dank...

================

Jedoch tritt nun ein weiteres Problem auf:
Es funktioniert nur, wenn der String vorher
festgelegt wurde.

Wenn der String jedoch aus der Textdatei kommt,
also wenn der String mithilfe von getline() geholt wird
mekert er beim Eintragen in die Combobox mit:

Invalid UTF-8 string passed to pango_layout_set_text()

Und es werden irgendwelche Zeichen in die Combobox
eingetragen wie: ?=?, Xz?, ...

Jemand eine Idee?

Ist hier wirklich niemand, der sich in diesem Gebiet ein bisschen besser auskennt???
 
Zurück
Oben