Zum Inhalt springen

std::string oder char???


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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.

Geschrieben

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 !!

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...