Jonas Geschrieben 4. Oktober 2001 Geschrieben 4. Oktober 2001 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 Zitieren
Woodstock Geschrieben 4. Oktober 2001 Geschrieben 4. Oktober 2001 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 Zitieren
Jonas Geschrieben 4. Oktober 2001 Autor Geschrieben 4. Oktober 2001 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 Zitieren
Woodstock Geschrieben 4. Oktober 2001 Geschrieben 4. Oktober 2001 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 Zitieren
mst Geschrieben 4. Oktober 2001 Geschrieben 4. Oktober 2001 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. Zitieren
maddin Geschrieben 4. Oktober 2001 Geschrieben 4. Oktober 2001 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. Zitieren
Cool-Matthias Geschrieben 5. Oktober 2001 Geschrieben 5. Oktober 2001 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 !! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.