Darstellung eines Textes (string, oder Char-Array) durch Sterne
-
Hi,
würde gerne bei einer Passwortkontrolle, das eingegebene PW in Sternen darstellen. Eine Idee hätte ich ja, dies zu verwirklichen:
Eine Mehrfachauswahl, die jedes Zeichen durch einen Stern ersetzt und so ausgibt und mit Goto genau über dem bisherigen Zeichen. Aber das ist ziemlich umständlich. Da gibts doch bestimmt eine bessere Möglichkeit, die ich mit meinen Kenntnissen nachvollziehen kann.
Hier mal meine PW-Abfrage:void PWAbfrage() { string Benutzer[2] = {"Admin", "User"}; // Festlegung zweier Benutzernamen und string Passwort[2] = {"Passwort", "PW"}; // zwei Passwörter, müssen ggf. // nur hier geändert werden string BenName; // Deklaration der Eingabevariablen string PW; // für Benutzername und Passwort do // Schleife: läuft solange die { // Benutzerdaten falsch sind system("cls"); cout << "\n\tLogin:"; cout << "\n\t~~~~~~"; cout << "\n\nBenutzername:\t"; cin >> BenName; // Eingabe des Benutzernamens cout << "\n\nPasswort:\t"; cin >> PW; // Eingabe des Passwortes if ((BenName == Benutzer[0]) && (PW == Passwort[0]) || // Vergleich, ob (BenName == Benutzer[1]) && (PW == Passwort[1])) // Daten übereinstimmen { Menu(); } // Aufruf des Menus else // Andernfalls Fehlermeldung { cout << "\a\n\n\tIhre Eingaben waren falsch! Bitte probieren"; cout << " Sie es erneut!"; getch(); } } while ((BenName != Benutzer[0]) || (PW != Passwort[0]) && (BenName != Benutzer[1]) || (PW != Passwort[1])); }
-
Mit Ansi C++ kannst du nicht kontrollieren, was die Konsole macht. Aber je nach Betriebssystem solltest du mal nach Funktionen suchen, die ohne Bildschirmecho einlesen:
string data="";char c; while(!isspace(c=getzeichen()) { cout<<'*'; data.push_back(c); }(gibt für jedes eingegebene Zeichen ein * aus - getzeichen() mußt du suchen oder selber schreiben, isspace() gibt's in der <ctpye>)