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

时间:2013-10-16 13:01:22

标签: 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按钮时它什么也没发生。为什么呢?
如何使它工作?

2 个答案:

答案 0 :(得分:1)

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

当你想逐字逐句阅读时(就像你显然那样) 你需要一些第三方库,比如诅咒。或者你会有 自己编写很多依赖于系统的代码。

答案 1 :(得分:0)

#include <conio.h>

cout << "Choose (s), (e) or (n): ";
// cin.ignore();
// choose = cin.get();

choose =getche();
if(choice==0)  //an extended character code is next
  choice=getche();