Lesen Sie ein Kennwort aus std::cin
Ich Lesen müssen, ein Kennwort aus der Standardeingabe und wollte std::cin
kein echo der eingegebenen Zeichen durch den Benutzer...
Wie kann ich das deaktivieren das echo von std::cin?
hier ist der code, den ich derzeit benutze:
string passwd;
cout << "Enter the password: ";
getline( cin, passwd );
Ich bin auf der Suche nach einem OS-agnostisch Weg, dies zu tun.
Hier es gibt Möglichkeiten, dies zu tun in Windows und *nix.
InformationsquelleAutor |
Du musst angemeldet sein, um einen Kommentar abzugeben.
@wrang-wrang Antwort war wirklich gut, aber nicht erfüllt meine Bedürfnisse, das ist mein letzter code (basierend auf diese) Aussehen:
Beispiel für die Nutzung:
Gonna deaktivieren, die Warnung, die ich denke
InformationsquelleAutor
Es gibt nichts in der Norm.
In unix, können Sie schreiben einige magic bytes, je nach Typ des Terminals.
Verwenden getpasswd, wenn es verfügbar ist.
Können Sie system()
/usr/bin/stty -echo
zu deaktivieren echo, und/usr/bin/stty echo
um es zu aktivieren (auch unter unix).Dieser Kerl erklärt , wie es zu tun, ohne mit "stty"; ich habe nicht versucht, es selbst.
getpasswd
wirklich helfen würde. Aber ich bin auf der Suche nach einem Weg, dies zu tun, ohne wiederkehrende OS black magicDer zweite link, den Sie erwähnt haben, ist tot.
InformationsquelleAutor Jonathan Graehl
Wenn Sie kümmern sich nicht um Portabilität, können Sie
_getch()
imVC
.Gibt es auch
getwch()
fürwide characters
. Mein Rat ist, dass SieNCurse
, die verfügbar ist in*nix
Systeme auch.InformationsquelleAutor AraK
Einzige Idee, was ich habe, man konnte Lesen, Passwort char by char, und danach drucken Sie einfach die Rücktaste ("\b"), und vielleicht ist '*'.
Der gleiche Fall wie jemand Protokollierung aller-Taste drücken 🙂
Dies ist unsicher, und eine schlechte Idee. Es ist inakzeptabel zu verlassen, auf der anderen Seite der Leitung für Ihre eigene Sicherheit. Und seien Sie vorsichtig, nicht zu Rohr über das Netzwerk. Und logging-Ausgabe != Protokollierung Tastendruck: Sie wird in der Regel geben die log-Datei Lesen userright, um mehr Menschen als die mit der rechten zu schreiben über den terminal-emulator-Programm, oder um Haken in den terminal-oder system-Ereignisse oder Tastatur-Treiber.
InformationsquelleAutor IProblemFactory