c++ - 有没有办法在不按回车键的情况下获取用户输入?

标签 c++ input

<分区>

我正在编写一个控制台游戏 (pac-man),我想知道如果用户不按回车键我将如何获得用户输入。我环顾了一下互联网,发现了一些关于 _getch() 的东西,但它显然不再是最新的,并且没有已知的头文件来声明它,除非有人构建自己的头文件,而我不能像我那样做对 C++ 来说仍然是新手。 那么我将如何构建可以执行此操作的代码? 谢谢

最佳答案

这对我有用(我在 linux 上):

#include <stdio.h>
#include <unistd.h>
#include <termios.h>

int main()
{
    struct termios old_tio, new_tio;
    unsigned char c;

    /* get the terminal settings for stdin */
    tcgetattr(STDIN_FILENO,&old_tio);

    /* we want to keep the old setting to restore them a the end */
    new_tio=old_tio;

    /* disable canonical mode (buffered i/o) and local echo */
    new_tio.c_lflag &=(~ICANON & ~ECHO);

    /* set the new settings immediately */
    tcsetattr(STDIN_FILENO,TCSANOW,&new_tio);

    do {
         c=getchar();
         printf("%d ",c);
    } while(c!='q');

    /* restore the former settings */
    tcsetattr(STDIN_FILENO,TCSANOW,&old_tio);

    return 0;
}

它使控制台无缓冲。

引用:http://shtrom.ssji.net/skb/getc.html

关于c++ - 有没有办法在不按回车键的情况下获取用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547868/

相关文章:

Javascript:如何使用循环函数在一个警告框中显示所有用户输入?

android - 如何在 Android 和桌面与 Qt 中使用相机

c++ - 实现二维范围树 C++

javascript - 如何使输入字段只接受 JavaScript 中的字母?

Javascript 将用户输入存储到数组中

java - 输入输出异常处理

C++ 通过 Const 引用传递并通过 Const 引用返回

c++ - 将 std::tuple<T...> 转换为 T

c++ - 惰性属性 - 可变的有效使用?

c - 尝试用 C 中的指针反转 Line