[ERLEDIGT]Char zu ASCII
-
std::string. Du hast ja den erforderlichen Header schon eingebunden.

-
Also so:
#include <iostream> #include <string> using namespace std; int main(){ string Eingabe = 'a'; // Der zu Verschlüsselnde Text cout << "Zuverschlüsselnder Text: "<< endl; cin >> Eingabe; int ascii=(int)Eingabe; //a wird in int gecastet system("PAUSE"); //Beliebige Taste zum schließen drücken. return(0); }Wie soll ich jetzt den string in ASCII konvertieren?
int ascii =(int)Eingabe;funktioniert ja nun nichtmehr.
-
strings schreibt man in doppelte Anführungszeichen.
@Problem: Du möchtest auf jedes Zeichen einen bestimmten Wert addieren. Dazu musst du nichts nach int umwandeln. Hier eine mögliche Lösung mittels Funktionsobjekt. (ungetestet)
#include <iostream> #include <string> #include <algorithm> using namespace std; struct add_n { add_n(int n) : n(n) {} template <typename T> T operator () (T value) const { return value + n; } private: int const n; }; int main() { cout << "Geben sie einen Text ein!\n"; string input; getline(cin, input); cout << "Wie viel wollen Sie auf die Zeichen addieren?\n"; int n; cin >> n; for_each(eingabe.begin(), eingabe.end(), add_n(n)); cout << "Der verschlüsselte Text lautet \"" << input << "\"\n"; }
-
Verstehe den Code nur nicht so ganz..
for_each(eingabe.begin(), eingabe.end(), add_n(n));Woher nimmst du hier das eingabe ?? ist vorher im Code nie deklariert.
-
Flüchtigkeitsfehler.

Sollte input heißen.
-
Mit input geht es dann auch.
Nur das Problem ist beim Debugen gebe ich als Text "Hallo Welt" ein addiere 5 Zeichen und der verschlüsselte Text lautet "Hallo Welt". Irgendwas klappt da nicht so ganz.€: Selber Fehler auch mit anderen Zahlen beim addieren.
-
Ich sollte meinen Code in Zukunft besser testen. Ich habe an transform gedacht, aber das Funktionsobjekt für for_each verwendet. Man ändere
template <typename T> T operator () (T value) const { return value + n; }in
template <typename T> void operator () (T& value) const { value += n; }dann sollte es funktionieren.
-
Ja so klappt es, wie kann ich diesen Text wieder entschlüsseln um zu sehen ob es wirklich geklappt hat?
-
So hab mir den Code zum Verschlüsseln selber zusammen gebastelt:
#include <iostream> #include <string> #include <algorithm> using namespace std; struct sub_n { sub_n(int n) : n(n) {} template <typename T> void operator () (T& value) const { value -= n; } private: int const n; }; int main() { cout << "Geben sie einen Text ein!\n"; string input; getline(cin, input); cout << "Wie viel wollen Sie auf die Zeichen subtrahieren?\n"; int n; cin >> n; for_each(input.begin(), input.end(), sub_n(n)); cout << "Der verschluesselte Text lautet \"" << input << "\"\n"; system ("PAUSE"); }Klappt auch perfekt. Vielen dank an 314159265358979 für deine Hilfe.
-
Tipp: sub_n mit einer Zahl n erzeugen, ist dasselbe, wie add_n mit -n zu erzeugen.
