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

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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