我需要使我的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按钮时,什么也没发生。为什么?
如何使其运作?

最佳答案

简单的答案是,您至少不能可靠地做到,
使用标准流。如果您输入的是
终端,您将获得操作系统所提供的功能。总的来说
在按下Enter键之前,您什么也不会给您
去除很多字符以进行行编辑和其他操作
在那之前; ESC是一个明显的变化
字符。

当您想逐个字符地阅读时
),您需要一些第三方库,例如curses。不然你会
自己编写很多系统相关代码。

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

10-11 00:35