我永远都不记得我是怎么做到的,因为我很少想到这一点.但是在C或C++中,从标准输入中读取字符的最佳方法是不等待换行符(按下回车).
理想情况下,它也不会将输入字符 echo 到屏幕上.我只想在不影响控制台屏幕的情况下捕捉击键.
我永远都不记得我是怎么做到的,因为我很少想到这一点.但是在C或C++中,从标准输入中读取字符的最佳方法是不等待换行符(按下回车).
理想情况下,它也不会将输入字符 echo 到屏幕上.我只想在不影响控制台屏幕的情况下捕捉击键.
在纯C++中,这是不可能的,因为它太依赖于可以与stdin
连接的终端(它们通常是行缓冲的).但是,您可以使用一个库:
Windows编译器提供的CONIO.使用_getch()
函数可以为您提供一个字符,而无需等待Enter键.我不是一个频繁的Windows开发人员,但我见过我的同学只包含<conio.h>
并使用它.在维基百科上可以看到conio.h
个.它列出了getch()
,它在Visual C++中被声明为已弃用.
Linux可用的诅咒.兼容的curses实现也可用于Windows.它还具有getch()
功能.(请try 使用man getch
查看其手册页).在维基百科上可以看到Curses个.
如果您的目标是跨平台兼容,我建议您使用诅咒.也就是说,我相信有一些函数可以用来关闭行缓冲(我相信这叫做"原始模式",而不是"煮熟模式"--查看man stty
).如果我没记错的话,诅咒会以一种便携的方式为你处理这件事.