我想制作一个在图形显示窗口中工作的 cin 版本(它是 SDL,但我认为这并不重要):也就是说,当您键入时,字符会回显到该窗口而不是控制台窗口。解决方案应该是跨平台的。
我有这个页面告诉我如何让字符不回显到控制台窗口: 从 std::cin 读取密码
...但我不知道该怎么做是让字符在新的图形显示窗口上回显。
我可以做的一件事是拦截键盘事件,如果发生,打印字符。但这并不能完美地呼应 istream 缓冲区的实际行为,因为重复键、退格、回车、制表符以及 cin 的真实行为,如果您在 C++ 到达 cin 之前输入,它会将那个您当时在屏幕上键入的内容。
我认为这种回显是在对 _read (在 Unix 世界中读取)的调用中完成的,并且我不确定如何访问。
TIA。