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 schreibt

    teilstring=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 als altstring.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.


Anmelden zum Antworten