Langsam komme ich mit den Strings durcheinander
-
Ich würde ja gerne in meinem Projekt nur einen String-Typ benutzen, entweder string oder CString, aber da ich an MFC gebunden bin, muss ich mal so und mal so verfahren. Ich muss nun einen String in Int konvertieren, hätte auch gerne atoi() benutzt, aber die Quelle ist leider ein CString aus einem CEdit-Control. Wie hole ich den Int am geschicktesten aus dem Edit?
-
Hallo
Gibt es bei CString nicht eine ähnliche Methode wie bei std::string c_str()
chrische
-
OK, habs grad gefunden. Ich hatte atoi(temp.c_str()) versucht zu benutzen. Es war aber das c_str() und nicht das atoi, das nicht mit CString zurechtkommt. Hab nun atoi(temp) benutzt und es klappt.
Aber die generelle Frage bleibt: Sollte man versuchen möglichst einen Stringtyp zu benutzen und ist es unschön, wenn man mal hier CString, dann wieder string und an anderer Stelle wieder char benutzt?
-
Hallo
Ich versuche immer std::String zuverwenden; zumindest in eigenen Klassen. Wenn man aber mit MFC arbeitet kommt man nur schwer um Cstring herum.
chrische
-
So gut wie jede GUI-Lib benutzt ihre eigene Stringklassen, egal ob Qt, wxWidgets, gtkmm u.a. MFC ist hier leider keine Ausnahme. Wirst also damit leben müssen. Oder wenn dein Projekt eh MFC-only bleibt, würde ich überall CString benutzen. Ist eine Entscheidung, bei der du die Vor- und Nachteile für dich selbst abwiegen mußt.
-
Mal eine Frage zu CEdit-Controls: Ich frage mich nun, ob ich den Int-Wert nochmal extra in einer Membervariablen abspeichern soll. Mit dem MFC Wizard kann ich beim Klick auf das Edit-Control ein m_intVariable anlegen. Aber der Wert steht ja schon in meinem m_editVariable, wäre also zweimal vorhanden, bloss dass ich leichter an den Wert käme. Überhaupt verstehe ich nicht, wieso es zwei Variablen geben kann, einmal für das Control und einmal für den Wert im Control. Bei einem Static habe ich ein m_stringValue angelegt und seltsamerweise wird der Inhalt des Statics automatisch aktualisiert, wenn ich in m_stringValue etwas ändere. Beim Edit und m_intVariable funktioniert das nicht. Ein UpdateData(false) steht nach der Wertänderung...