c++ - 在 C++ 中从 cin 按下 ESC 按钮之前如何读取符号

标签 c++ input cin

我需要让我的 while 循环工作,直到按下键盘上的 ESC 按钮。

char choose = NULL;
while( choose != 27)
{
    cout << "Choose (s), (e) or (n): ";
    cin.ignore();
    choose = cin.get();

    switch(choose){
    case 's': {SortRoutesByStartPoint(routeList, n); ShowRoutes(routeList, n, "Sorted list (s):"); break;}
    case 'e': {SortRoutesByEndPoint(routeList, n); ShowRoutes(routeList, n, "Sorted list (e):"); break;}
    case 'n': {SortRoutesByNumber(routeList, n); ShowRoutes(routeList, n, "Sorted list (n):"); break;}
    default: {cout << "Not found\n\n"; break;}
    }
}

但是当我按下 ESC 按钮时,它什么也没发生。为什么?
如何让它发挥作用?

最佳答案

简单的答案是你不能,至少不可靠, 使用标准流。如果你从输入 一个终端,你得到操作系统给你的东西。一般来说,它 在按下回车之前不会给你任何东西,并且 删除了很多字符以进行行编辑和其他操作 在那之前; ESC 是其中的一个明显变化 字符。

当你想一个字符一个字符地阅读时(你显然 做),你需要一些第三方库,比如 curses。或者你会有 自己编写大量系统相关代码。

关于c++ - 在 C++ 中从 cin 按下 ESC 按钮之前如何读取符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19404138/

相关文章:

C++ 记录每个函数和参数值

python - 是否可以将用户输入隐藏为 'sudo' 密码输入?

c - 使用打印功能无法打印字符串的问题

c++ - 尝试在 std::cout 和 std::ifstream 之间切换

c++ - 读取字符串直到标记 (C++)

c++ - 如何使用符合 STL 的分配器进行异构内存分配

c++ - 从节点获取数据值,指针混淆

c++ - 使用 memcpy 尝试将一个结构复制到 char[] 缓冲区中

javascript - 使用 jQuery 设置复选框

c++ - 我的 cin 在 while 循环中被忽略了