ROT n-Kryptographie
-
Hey Leute,
Ich habe aus Übungszwecken mal ein leichtes ROT-Programm geschrieben.
Der Benutzer soll einen Text eingeben, welcher verschlüsselt werden soll und anschließend soll das Proggi einfach noch Fragen um wie viele Stellen jedes Zeichen in der ASCII-Tabelle verschoben werden soll.
Komischerweise jedoch wird wenn ganze Sätze eingegeben werden immer nur das erste Wort ausgegeben.Zudem ist des öfteren das Fail-Bit im Stream gesetzt, was darauf hindeutet, dass irgewo noch ein Fehler sein muss

cya
DavidPS:
Code:
#include <iostream> #include <fstream> #include <sstream> #include <string> using namespace std; string verschluessele(string,int); int main(void) { string wort=""; int q=0; cout << "Bitte geben Sie ein Wort ein, welches verschluesselt werden soll:" << endl; cin >> wort; cin.sync(); cout << "Bitte geben Sie jetzt noch an, was fuer eine\nROT-Verschluesselung Sie erhalten wollen" << endl; cin >> q; /* cout << cin.good(); cout << cin.bad(); cout << cin.fail(); */ cout << verschluessele(wort,q) << endl; getchar(); system("Pause"); } string verschluessele(string s, int e) { int c=0; string newstring=""; while(c < s.length()) { s[c]+=e; c++; } return(s); }
-
777 schrieb:
Komischerweise jedoch wird wenn ganze Sätze eingegeben werden immer nur das erste Wort ausgegeben.
Verständlich - op>> verwendet alle WhiteSpaces als Trennzeichen. Wenn du eine komplette Textzeile einlesen willst, nimm lieber getline().
Zudem ist des öfteren das Fail-Bit im Stream gesetzt, was darauf hindeutet, dass irgewo noch ein Fehler sein muss

Das failbit wird höchstwahrscheinlich beim "cin>>q;" gesetzt, weil der Rest des Eingabesatzes noch im Tastaturpuffer wartet - und das nächste Zeichen nicht als Zahl erkannt werden kann.