Artchi schrieb:
Da std::string intern selbst Arrays verwendet, kann es garnicht langsamer sein.
Als ich das las, wusste ich bereits, es lohnt nicht weiterzulesen... unnötigerweise las ich trotzdem bis
Artchi schrieb:
Ein C-String kann niemals sicher sein, wie ein std::string.
hier.
@Archi: Wenn Du virtuelle Funktionen verwendest ist das automatisch langsamer als wenn du es sein läßt. Es kann nicht nur langsamer sein: Es ist.
Da gibt's auch nix hin und her zu zu diskutieren. Zwei Zugriffe pro virtuellem Funktionsaufruf, rufen diese Funktionenen ebenfalls virtuelle Funktionen werden es endsprechend mehr.
Mal ernsthaft... wenn die Länge des Strings so wichtig ist, fühlst Du Dich doch nicht überfordert, eine int-Variable mitzuspeichern, oder?
Wenn es nicht erforderlich ist, ist der C-String schneller, weil er sich um die Länge nicht kümmert.
Ein C-String kann genauso sicher sein, wie ein std::string, wenn der Programmierer die Probleme, die Arrays beliebiger Art behaftet sind, kennt und berücksichtigt.
Ein Programmierer, der beliebige Arrays nicht beherrscht und bei einem C-String einen Fehler macht, muss auch einen Vektor nehmen, um mehrere Strings hintereinander zu packen.
Wie macht so ein Programmierer, der immer nur mit Netz und doppeltem Boden programmiert, wenn er dann mal einen guten Algorithmus entwickeln soll.
Was ich unter einem guten Algorithmus verstehe, läuft schnell, einfach, fehlerfrei und grundsätzlich ohne Sicherheitsleine.
Ich habe nichts gegen std::strings, ich habe auch nix gegen C-Strings.
Beide haben ihren Nutzen und ihren Sinn. Und weil beide Nutzen und Sinn haben, muss sich jeder fragen, der eines von beiden für das Böse im Programmieren hält, was er dabei nicht verstanden hat, oder warum er das vermeindlich Böse scheinbar nicht ausreichend im Griff hat.
Auch C-Strings können Deine Freunde sein.