Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

std::string oder char???

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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.

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.