Маскирование ввода пользователя звездочками в Windows? - PullRequest
2 голосов
/ 26 октября 2019

Мне нужно создать простую программу для работы с паролями, в которой программа просит пользователя ввести пароль, а когда пользователь вводит данные, символы отображаются в виде звездочек.

В каждом учебном пособии используется getch()conio.h). Но я не хочу этим пользоваться. Есть ли легкая альтернатива для этого?

Я использую Windows 10.

PS: Пожалуйста, не путайте это с дублированием этого вопроса: Альтернативная функция вiostream.h для getch () conio.h?

Поскольку этот вопрос требует удержания вывода на экран, тогда как мне нужно маскировать ввод в виде звездочек.

1 Ответ

2 голосов
/ 26 октября 2019

Мы здесь с нестандартной функциональностью. Так что, что бы вы ни делали, оно не будет переносимым.

Путь к собственной консоли будет ReadConsoleInput(), как объяснено здесь . В вашем случае вы сначала отключили бы эхо и режим линейного ввода, очистив флаги консольного режима ENABLE_LINE_INPUT и ENABLE_ECHO_INPUT. Затем вы реагируете на ключевые события, отображая «*». Не забудьте восстановить начальный режим консоли в конце.

Ярлык должен был бы просто сохранить и изменить режим консоли (как показано в коде выше), затем выполнить цикл для cin.get() и повторить cout<<'*';, а затем cout.flush();, чтобы убедиться, что выводне ждет в буфере, создавая дискомфорт для пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...