La lecture d'un mot de passe à partir de std::cin
J'ai besoin de lire un mot de passe à partir de l'entrée standard et voulait std::cin
pas l'écho des caractères tapés par l'utilisateur...
Comment puis-je désactiver l'écho de std::cin?
voici le code que j'utilise actuellement:
string passwd;
cout << "Enter the password: ";
getline( cin, passwd );
Je suis à la recherche d'un OS de façon agnostique pour ce faire.
Ici il y a des façons de le faire dans les deux Windows et *nix.
Vous devez vous connecter pour publier un commentaire.
@wrang-wrang réponse a été vraiment bon, mais ne répond pas à mes besoins, c'est ce que mon code final (qui était fondée sur cette) ressembler à:
Exemple d'utilisation:
Il n'y a rien dans la norme de ce.
Sous unix, vous pouvez écrire un peu de magie octets en fonction du type de terminal.
Utilisation getpasswd si elle est disponible.
Vous pouvez system()
/usr/bin/stty -echo
pour désactiver l'écho, et/usr/bin/stty echo
pour l'activer (encore une fois, sur unix).Ce mec explique comment le faire sans l'aide de "stty"; je ne l'ai pas essayé moi-même.
getpasswd
aiderait vraiment. Mais je suis à la recherche d'un moyen de le faire sans récurrents à l'OS de la magie noireSi vous n'avez pas de soins sur la portabilité, vous pouvez utiliser
_getch()
dansVC
.Il est également
getwch()
pourwide characters
. Mon conseil est que vous utilisezNCurse
qui est disponible dans*nix
systèmes.Seulement idée de ce que j'ai, vous avez pu lire le mot de passe char par char, et après il suffit d'imprimer la touche retour arrière ("\b") et peut-être '*'.