Ist es in C++ sinnvoller ein Char Array oder ein String für z.B. Wörter zu benutzen?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Neben dem, was die anderen schon geschrieben haben, noch eine Hand voll kleiner Ratschläge:
  1. Bei einem Buch aus dem Jahr 2000 handelt es sich wohl um C++98. Inzwischen gab es C++03, C++05, C++11, C++14 und bald kommt C++17 raus. Ich würde behaupten, dass in den letzten beiden Versionen (also seit C++11) so unglaublich viele Neuerungen eingeflossen sind, dass es sich - verglichen mit C++98 - um eine völlig neue Programmiersprache handelt! So wie damals programmiert man heute nicht mehr in C++, sei dir dessen bitte bewusst.
  2. Da du ja schon Erfahrung mit einer - zugegeben etwas veralteten - Version von C++ zu tun hattest, solltest du wirklich in Erwägung ziehen, dir das Buch "Die C++ Programmiersprache" von "Bjarne Stroustrupp" zu kaufen, und zwar in der aktuellen (!!!) Version. Dieses Buch richtet sich laut Autor nicht an absolute Anfänger, aber nach dem was du schreibst, wirst du sicher sehr gut damit klar kommen! Das kannst du locker von Vorne bis Hinten durcharbeiten (auch wenn es ein ganz schöner Wälzer ist), und da du ja kein totaler Anfänger mehr bist, wirst du damit sehr entspannt lernen können.
  3. C++ bietet zwar die C Standardbibliothek in den <cXYZ> Headern an, aber viele Funktionen wurden durch eine bessere Implementierung in anderen Headern ersetzt. So benutzt man heute anstelle von "strlen()" lieber "std::char_traits<char>::length()" oder statt "strcmp()" lieber "std::char_traits<char>::compare()". (Die Vorteile dieser längeren Versionen werden sich einem Anfänger vermutlich nicht auf Anhieb erschließen, aber als Fortgeschrittener wirst du froh sein, dass es sie gibt.)
  4. Beachte besonders Punkt 1 dieser Liste! C++98 und C++11 (oder neuer) sind von den Konzepten her schon SEHR unterschiedlich. Mit dem Buch von "Bjarne Stroustrupp" wirst du das alles aber a) locker meistern und b) verdammt viel Freude haben!
Also dann, viel Spaß noch mit C++! :)

PS: Die char_traits gab es genau genommen auch schon zu C++98 Zeiten, aber irgendwie wurden die damals noch viel stiefmütterlicher behandelt als heute. ><

Ist es in C++ sinnvoller ein Char Array oder ein String für z.B. Wörter zu benutzen?

Ist es nicht „sinnvoller“ Java statt C++ zu nutzen?

Was ist überhaupt sinnvoll?

Stroustrup fand zunächst Char Arrays in C++ für sinnvoller. Irgendwann begannen Normenausschüsse sich wie bei C um C++ zu kümmern und sagten dann, wir würden lieber Strings statt Char Arrays verwenden. Das ist ja nun eher Geschmackssache denn eine Frage der Sinnhaftigkeit.

Wichtig ist doch nur, dass die Programme bzw. die Software richtige Ergebnisse liefert. Und die hängen nicht davon ab, ob man Strings oder Char Arrays nutzt.

Da du mit Arrays sehr einfach Memory-Leaks und damit nicht nur Programmfehler sondern auch potentielle Sicherheitslücken riskierst solltest du definitiv wann immer möglich std::string und deren Methoden verwenden.

Mit Methoden meine ich z.B. string.at(i) statt string[i] da du sonst wieder Memory-Leaks verursachen könntest. 

std::strings sind immer noch ganz normale char-arrays. Der Riesen Vorteil kommt jedoch durch die Methoden, welche dir das Error-handling und damit potentielle Gefahren abnehmen.

Liebe Grüße, JutenMorgen!