Frage zu Strings
-
Hallo ihr lieben,
ich habe eine klitzekleine Frage an euch.Wir sollen in der Uni ein Programm in C++ erstellen, wobei die Benutzung von Strings in C++ Manier geschehen soll (string.substr, string.length, stringstreams etc.).
Nun zu meiner Frage:
Ist es laut C++-Konformität egal ob man, um einen einzigen Buchstaben aus einem String heraus zu kriegen folgendes schreibtteilstring=altstring.substr(0,1);oder
irgendeinchar=altstring[0];Ich brauche eben den ASCII-Code des Buchstabens, daher die Frage

Bitte nich schlagen, ist mein erster Beitrag und ich komme normalerweise aus dem Delphi-Lager ^^
Viele Grüße,
Stefan
-
Du bekommst mit beiden Versionen den einzelnen Buchstaben, soweit ist das noch egal. Allerdings hast du in der substr()-Version diesen Buchstaben in einem neuen String (der Länge 1) verpackt und müsstest ihn da noch rausholen, während du von op[] den "nackten" Buchstaben erhältst.
Um den Buchstaben als ASCII-Code weiterzuverwenden, benötigst du die zweite Variante.
-
Hatte ich mir schon gedacht. Also ist das egal und beides C++ konform?
Der Prof. achtet nämlich penibel darauf.
-
Egal ist es nicht, aber beides konform

Der Unterschied liegt darin, was du jeweils in der Hand hast - und wie du damit weiterarbeiten kannst. Und um an das Zeichen in deinem substr() zu kommen, brauchst du sowieso wieder operator[] - und da sieht
altstring[0]wesentlich eleganter aus alsaltstring.substr(0,1)[0]bzw.*altstring.substr(0,1).begin(). (davon, daß es auch schneller ist, will ich gar nicht erst anfangen)
-
Ok, vielen Dank. Super Board btw

-
Also wenn du EINEN Buchstaben haben willst, dann benutze die at()-Methode. []-Operator würde ich nicht benutzen, da die nicht indexgeprüft ist.