CString oder string?
-
generell würd ich sagen wenn du für nur ein system entwickelst benutz die systemeigenen tools weil sie in die umgebung passen
d.h. du musst weniger schreiben wenn du cstring in einer ms umgebung benutzt
sobald du auf mehreren systemen arbeitest brauchst du zwingend den stl string, oder char pointer bzw. eine eigene klasse die den char pointer nach ansi standard kapselt (der stl string is auf vielen embedded systemen nich vorhanden)
bei den mainstream systemen (win mac linux) is der stl string die beste wahl
-
CString wurde zu einer Zeit entwickelt, als es die C++-Klasse string noch nicht im Standard gab. Prinzipiell sollte man immer std::string verwenden, da es alle notwendigen Funktionen bereit hält.
-
Erhard Henkes schrieb:
CString wurde zu einer Zeit entwickelt, als es die C++-Klasse string noch nicht im Standard gab. Prinzipiell sollte man immer std::string verwenden, da es alle notwendigen Funktionen bereit hält.
Kann man nicht so verallgemeinern. Wenn ein Programm schon "MFC-verseucht" ist dann sehe ich keinen Grund nicht CString zu benutzen. Die STL-Stringklasse finde ich nicht sonderlich gelungen. Man muss sich zuviele Sachen drum herum basteln (z.B. trim, replace etc.). CString gefällt mir von der "Bedienung" her schon besser. Bei neu gestarteten Projekten und wiederverwendbaren Klassen würde ich aber auch eher zum std::string tendieren und sie komplett MFC-frei halten.
-
komplett MFC-frei halten
Ich will dich ja nicht in die totalte Dunkelheit führen, Mastah, aber CString gibt es auch ohne MFC

(Wenn ich sehe, wie oft MFC-Unterstützung zu einem ATL- oder Consolen-Perojekt dazugefügt wird - und warum? "Na, wegen CString"....)
-
Habt ihr schnmal versucht einen std::string in einer DLL, welche eine ganze Klasse exportiert zu verwenden.
Ich hab es ohne Probleme nicht geschafft.Wenn man MFC verwendet kann man auch CString verwenden. MS hat diese Klasse optimiert.
Will man auch andere Plattformen dann hat man hier sowieso nichts verloren da MFC nicht verwendung finden kann.
-
Ich habe noch eine Frage, und zwar ist das erlaubt, bzw. in ordnung:
CString str = "Hallo!"; //irgendwas mit dem string machen, z.b. MessageBox(str)... str = "Welt"; //Wieder irgendwas machen.Darf man so immer wieder den Text ändern?
-
graf_double schrieb:
Ich habe noch eine Frage, und zwar ist das erlaubt, bzw. in ordnung:
CString str = "Hallo!"; //irgendwas mit dem string machen, z.b. MessageBox(str)... str = "Welt"; //Wieder irgendwas machen.Darf man so immer wieder den Text ändern?
natürlich.
-
Will man auch andere Plattformen dann hat man hier sowieso nichts verloren da MFC nicht verwendung finden kann.
Ha!
CString implementation based on basic_string

-
peterchen schrieb:
komplett MFC-frei halten
Ich will dich ja nicht in die totalte Dunkelheit führen, Mastah, aber CString gibt es auch ohne MFC

Ändert nichts an der Tatsache, dass du die MFC in meinen zukünftigen Projekten nicht mehr finden wirst. Und wenn ich die MFC nicht verwende dann verwende ich auch kein CString, da die Vorteile hinfällig werden.
-
da die Vorteile hinfällig werden
find ich nicht, aber ist vioelleicht geschmackssache (oder: welche Vorteile sind dir wichtig)
-
der fragesteller benutzt aber mfc und desshalb sollte er auch cstring verwenden
unix tom hat auch recht... std::string macht beim klassenexport per dll echte probleme