我需要创建一个简单的密码程序,该程序要求用户输入密码,当用户输入时,它将字符显示为星号。
每个教程都使用 getch()
(在 conio.h
中)。但我不想用它。有没有简单的替代方法可以做到这一点?
我使用的是 Windows 10。
P.S:请不要将此问题与此问题混淆:Alternative function in iostream.h for getch() of conio.h?
因为该问题要求保留屏幕输出,而我需要将输入屏蔽为星号。
最佳答案
我们这里使用的是非标准功能。所以,无论你做什么,它都不是可移植的。
native 控制台方式是 ReadConsoleInput()
如上所述 here 。在您的情况下,您首先需要通过清除控制台模式标志 ENABLE_LINE_INPUT
来禁用回显和行输入模式。和ENABLE_ECHO_INPUT
。然后您可以通过显示“*”来对关键事件使用react。最后不要忘记恢复初始控制台模式。
快捷方式是保存并更改控制台模式(如上面的代码所示),然后循环 cin.get()
并回响cout<<'*';
接下来是 cout.flush();
确保输出不会在缓冲区中等待,从而给用户带来不适。
关于c++ - 在 Windows 中将用户输入隐藏为星号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571242/