📜  cpp 仅在控制台中获取击键 - C++ (1)

📅  最后修改于: 2023-12-03 15:00:03.076000             🧑  作者: Mango

通过控制台获取击键 - C++

在C++中,我们通常使用cin来从控制台中获取用户的输入。不过,cin在用户按下回车键之前不会读取字符,因此无法实时获取击键。幸运的是,有一些库可以帮助我们实现实时获取击键的功能。

Windows平台下的实时击键获取

在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码值。

跨平台的实时击键获取

如果需要实现跨平台的实时击键获取,则可以使用一些第三方库,如ncursesSDL2

以下是一个使用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()函数会阻塞程序的执行,直到用户按下一个键。

这些是用于在控制台中获取击键的两种常见方法,具体使用哪种方法取决于您的需求和平台。无论您选择哪种方法,都可以实现读取实时击键的功能。