Veröffentlicht 4. Oktober 200123 j Aloa he! Ich bin gerade dabei C++ zu lernen. Eine Sache hab ich allerdings noch nicht verstanden: Was spricht bei der Arbeit mit Zeichenketten für die Verwendung vom Datentyp Char, wenn man auch mit std::string arbeiten könnte? Was gibts da für Vor-/Nachteile? MfG Jonas
4. Oktober 200123 j Hmm, ich verstehe Dein Problem galube ich nicht so ganz. Ich kenne zum Speichern von Zeichenketten nur die Möglichkeit des Datentyps char. Wie wendet man denn std::string an? Bine
4. Oktober 200123 j Na man includet <string.h> bzw. <string> mit using namspace std Dann erzeugt man ein neues String-Objekt: string meinezeichenkette; Und dann kann man da richtig gut mit arbeiten. Das String- Objekt hat auch diverse Methoden, wo man es mit bearbeiten kann. Deswegen verstehe ich auch nicht, weshalb man noch mit Char arbeiten soll. Die ganzen * machen einen doch verrückt. MfG Jonas
4. Oktober 200123 j Hmm, also am Anfang gebe ich zu, war das bei mir auch so (mache es auch noch nicht so lange, habe auch dieses Jahr erst meine Ausbildung angefangen). Aber so wie Du das beschreibst, funktioniert es bei mir auch gar nicht. Frag mal Hasi, die ist nennt, und hilft eigentlich immer. Bine
4. Oktober 200123 j char* ist die ursprungliche Variante Zeichenketten zu speichern. Klassen wie string oder CString (MFC) sind objektorientierte Erweiterungen, die einige Nachteile von char* ausbügeln sollen. Vorteile char*: + Geschwindigkeit : char* ist i.d.R. wesentlich schneller als die dynamischen Klassen. Wenn es um zeitkritischen Code geht und viele Zeichenketten-Operationen durchgeführt werden, benutze ich immer char*. + Viele Funktionen erwarten eine char* als Parameter. Nachteile char*: - char* werden mit einer bestimmten Länge (Zeichen in der Zeichenkette) angelegt. Wenn man mehr Zeichen speichern will, gibt es Runtime-Fehler (im besten Fall). Klassen wie string haben diese Einschränkung auf eine bestimmte Länge nicht. Der Speicher wird dynamisch belegt. Das geht aber massiv auf Kosten der Geschwindigkeit. - Das Handling von char* ist ziemlich umständlich. Funktionsaufrufe wie strcpy(szZiel,szQuelle) sind wesentlich unlogischer als Operatioren wie strZiel = strQuelle. Das ist mein Wissen/Meinung dazu.
4. Oktober 200123 j ich verwende eigentlich immer char*. finde ich persönlich besser wie die klasse string. der grund dafür ist, das ich bisher noch nicht viele sachen mit string gearbeitet habe, und wenn dann nur mit CString aus der MFC. nein mal im ernst. ich denke es kommt immer ein wenig auf die vorlieben des coders an, was er jetzt verwendet. es sei denn man soll jetzt speziell auf die geschwindigkeit achten oder so. deshalb siegt bei mir auch char*. ausser ich brauche viel operationen wie vergleichen oder zusammemkopieren. dann würde ich glaubich auch zu string wechseln.
5. Oktober 200123 j Also wenn du Geschwindigkeit brauchst, ist char* auf jeden Fall besser! Ausserdem kannst du dir bei vielen kleinen Programmen so den ganzen MFC Overhead sparen. Trotzdem würde ich auch unter MFC lieber CString verwenden als nen statischen Wert std::string !!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.