Maison >développement back-end >C++ >Comment puis-je lire les mots de passe à partir d'une entrée standard sans leur faire écho ?

Comment puis-je lire les mots de passe à partir d'une entrée standard sans leur faire écho ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 16:24:10217parcourir

How Can I Read Passwords from Standard Input Without Echoing Them?

Lecture des mots de passe depuis std::cin sans écho

Le besoin de lire les mots de passe à partir de l'entrée standard sans faire écho aux caractères saisis se pose régulièrement. Pour y parvenir, il est essentiel de désactiver l'écho sur std::cin.

Différences Windows et UNIX

La méthode de désactivation de l'écho dépend du système d'exploitation. Sous Windows, les fonctions GetConsoleMode et SetConsoleMode sont utilisées, tandis que dans les systèmes de type UNIX, tcgetattr et tcsetattr sont utilisés.

Implémentation de la solution

L'extrait de code fourni comprend une fonction indépendante du système d'exploitation, SetStdinEcho, qui permet de basculer l'écho pour std :: cin. Un exemple d'utilisation est également fourni, montrant comment lire un mot de passe sans écho, puis l'écho lorsque l'utilisateur appuie sur Entrée :

#include <iostream>
#include <string>

int main()
{
    SetStdinEcho(false);

    std::string password;
    std::cin >> password;

    SetStdinEcho(true);

    std::cout << password << std::endl;

    return 0;
}

Ce code garantit que le mot de passe de l'utilisateur reste privé lors de sa saisie et s'affiche en cas de saisie réussie. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn