📅  最后修改于: 2023-12-03 15:00:03.076000             🧑  作者: Mango
在C++中,我们通常使用cin
来从控制台中获取用户的输入。不过,cin
在用户按下回车键之前不会读取字符,因此无法实时获取击键。幸运的是,有一些库可以帮助我们实现实时获取击键的功能。
在Windows平台下,我们可以使用conio.h
库来实现实时击键获取。conio.h
是一个不属于标准C++库的头文件,但是在Windows环境下广泛使用。以下是一个示例程序:
#include <iostream>
#include <conio.h>
int main() {
char ch;
std::cout << "Press any key to continue..." << std::endl;
ch = _getch(); // 获取当前按下的键
std::cout << "You pressed: " << ch << std::endl;
return 0;
}
在上面的示例中,我们使用_getch()
函数从控制台中获取击键。注意,ch
是一个char
类型的变量,因为_getch()
返回的是ASCII码值。
如果需要实现跨平台的实时击键获取,则可以使用一些第三方库,如ncurses
或SDL2
。
以下是一个使用ncurses
库的示例程序:
#include <iostream>
#include <ncurses.h>
int main() {
initscr(); // 初始化ncurses
raw(); // 关闭行缓冲
keypad(stdscr, TRUE); // 启用特殊键(如方向键)的读取
printw("Press any key to continue...\n");
int ch = getch(); // 获取当前按下的键
printw("You pressed: %d\n", ch);
endwin(); // 关闭ncurses
return 0;
}
在上面的示例中,我们使用ncurses
库的getch()
函数来获取实时击键。getch()
函数会阻塞程序的执行,直到用户按下一个键。
这些是用于在控制台中获取击键的两种常见方法,具体使用哪种方法取决于您的需求和平台。无论您选择哪种方法,都可以实现读取实时击键的功能。