在Windows中将用户输入作为星号吗?

问题描述 投票:2回答:1

我需要创建一个简单的密码程序,该程序要求用户输入密码,并且当用户输入时,该程序将字符显示为星号。

[每个教程都使用getch()(在conio.h中)。但我不想使用它。有没有其他简便的选择呢?

我正在使用Windows 10。

P.S:请不要将此与这个问题重复:Alternative function in iostream.h for getch() of conio.h?

因为该问题要求保留屏幕输出,而我需要将输入屏蔽为星号。

c++ windows console-application windows-console
1个回答
2
投票

我们在此处具有非标准功能。因此,无论您做什么,它都不是可移植的。

本机控制台方式将是ReadConsoleInput(),如ReadConsoleInput()所述。在您的情况下,您首先要通过清除控制台模式标志hereENABLE_LINE_INPUT来禁用回波和线路输入模式。然后,您将通过显示“ *”来对关键事件做出反应。最后不要忘记恢复初始控制台模式。

一种快捷方式是只保存并更改控制台模式(如上面的代码所示),然后循环进行ENABLE_ECHO_INPUT并在cin.get()之后回显cout<<'*';以确保输出不等待在缓冲区中,给用户带来不适。

© www.soinside.com 2019 - 2024. All rights reserved.