cin und Leer-, Sonderzeichen

proxteam

Grünschnabel
Hallo zäme,

ich habe nachfolgenden C++ Code programmiert. Wenn ich für die Variable textToEncrypt in der Konsole etwas eingebe das zB ein Leer- oder Sonderzeichen enthält, wird die Aufforderung zur Eingabe eines Passwortes übersprungen und der Programmcode fortgesetzt. Wieso?

Code:
char textToEncrypt[8000];
char password[50];

cout << "Geben Sie den zu kodierenden Text ein (max. 8000 Zeichen): ";
cin >> textToEncrypt;
cout << "Geben Sie ein Passwort ein (max. 50 Zeichen): ";
cin >> password;

// weiterer Code

Vielen Dank im Voraus.
 
Hi.

Mit "cin >> aString" liest du nur ein Wort ein. Die Eingabe wird aber zeilenweise gepuffert, d.h. die Verarbeitung geht sowieso erst weiter wenn du die Eingabetaste drückst. Dann wird das erste Wort der Eingabe in die textToEncrypt eingelesen, das darauffolgende Wort dann in die Variable passwort.

Erstens solltest du lieber std::strings verwenden. Dann könntest du die std::getline(istream&, string&) Funktion zum Einlesen einer kompletten Zeile verwenden.

Siehe http://www.cplusplus.com/reference/string/getline/

Gruß
 
Zurück