Buchstaben in ASCII-Code umwandeln
-
Hallo ich habe folgende Aufgabenstellung erhalten.
Ich muss eine Funktion erstellen, die jeden Buchstaben in einem String durch seinen Nachfolger im Alphabet ersetzt. Bei Z bzw. z soll es wieder bei A bzw. a weitergehen. Mein Programm funktioniert soweit, allerdings erhalte ich für die zweite Stelle eine 0 und ich weis nicht ganz warum, weil alle anderen Stellen werden richtig umgesetzt. Kann mir jemand helfen ?#include <iostream> #include <cassert> #include <string> int main (){ std::cout << "Program starting..." << std::endl; std::string zeichen = "Hallo"; for(int a=0; a<= 4; a++){ int ascii = int(zeichen[a]); if(ascii == 90 || ascii == 122){ zeichen = char(zeichen[a]-25); std::cout << zeichen << std::endl; } if(ascii >=65 && ascii <=89 || ascii >=97 && ascii <=121) { zeichen = char(zeichen[a] +1); std::cout << zeichen << std::endl; } else{ std::cout << "No letter..." << zeichen <<std::endl; } } std::cout << "Program terminating..." << std::endl; return 0; }
-
@Bobbele ist die Variable zeichen jetzt der string oder das umgewandelte Zeichen?
In C bzw. C++ ist kein Unterschied zwischen 'A' und 65 (bei ASCII)
D.h. überall wo du 65 stehen hast, kannst du 'A' schreiben.
-
Die Variable Zeichen ist der String
-
@Bobbele sagte in Buchstaben in ASCII-Code umwandeln:
Die Variable Zeichen ist der String
Und warum weist du ihr dann das umgewandelte Zeichen zu?
(Dadurch wird ein neuer String mit 'I' erzeugt, das dann wohl noch ein '\0' als Terminator (an 2. Stelle) bekommt).
-
@DirkB
Bezogen auf die beiden Zeilen 15 und 21 oder ?
-
@Bobbele sagte in Buchstaben in ASCII-Code umwandeln:
@DirkB
Bezogen auf die beiden Zeilen 15 und 21 oder ?16 und 22 gehören da ja auch noch zu.
Hier ist der Bezeichner zeichen für einen string, der Text enthält, auch keine gute Wahl.
-
@DirkB
Okay alles klar ich hab den Fehler beseitigt und jetzt funktioniert es danke.