我需要创建一个简单的密码程序,该程序要求用户输入密码,并且当用户输入时,该程序将字符显示为星号。
[每个教程都使用getch()
(在conio.h
中)。但我不想使用它。有没有其他简便的选择呢?
我正在使用Windows 10。
P.S:请不要将此与这个问题重复:Alternative function in iostream.h for getch() of conio.h?
因为该问题要求保留屏幕输出,而我需要将输入屏蔽为星号。
我们在此处具有非标准功能。因此,无论您做什么,它都不是可移植的。
本机控制台方式将是ReadConsoleInput()
,如ReadConsoleInput()
所述。在您的情况下,您首先要通过清除控制台模式标志here和ENABLE_LINE_INPUT
来禁用回波和线路输入模式。然后,您将通过显示“ *”来对关键事件做出反应。最后不要忘记恢复初始控制台模式。
一种快捷方式是只保存并更改控制台模式(如上面的代码所示),然后循环进行ENABLE_ECHO_INPUT
并在cin.get()
之后回显cout<<'*';
以确保输出不等待在缓冲区中,给用户带来不适。