0

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ボタンを押しても何も起こりません。なんで?
それを機能させる方法は?

4

2 に答える 2

1

簡単な答えは、標準ストリームを使用することはできない、少なくとも信頼できないということです。端末から入力している場合は、OS が提供するものを取得します。一般に、Enter キーが押されるまでは何も表示されず、その前に行編集やその他の操作のために多くの文字が削除されます。ESC がこれらの文字の中にあるという明確な変更があります。

文字ごとに読みたい場合 (明らかにそうしているように)、curses のようなサードパーティのライブラリが必要です。または、システムに依存する多くのコードを自分で作成する必要があります。

于 2013-10-16T13:24:37.857 に答える