按退出按钮结束循环

问题描述 投票:0回答:1

我有一个关于本学期早些时候的 DS&OOP 作业的问题。其中一个问题是模拟桥上的汽车收费站,您必须跟踪 1) 经过的汽车 2) 支付过路费的汽车 3) 经过的汽车总数和收取的现金总额。用户必须按“p”表示付费汽车,“n”表示非付费汽车,按退出按钮(esc)必须结束代码并打印出经过的汽车总数和收取的钱数。我使用 while 循环完成了这部分代码,如下所示:

int main()
{
    tollBooth t;
    char c = 0;
    while (c != 'e' && c != 'E')
    {
        cout << "Choose:\n'p' paying car \n'n' nonpaying car \n'e' exit \n";
        cin >> c;
        switch (c) {
        case 'p':
        case 'P':
            t.payingCar();
            break;
        case 'n':
        case 'N':
            t.nopayCar();
            break;
        case 'e':
        case 'E':
            break;
        default:
            cout << "Invalid choice, try again." << endl;
            break;
        }
    } 
    t.Display();
    return 0;
}

我不知道如何在按下退出按钮时结束代码,所以我只是选择了字母 E 而不是 esc 按钮。但如果我使用退出按钮来完成此操作,代码中需要进行哪些更改?

c++ while-loop
1个回答
0
投票

别担心,我会支持你的!

因此,为了解决这个问题,我们使用“_getch()”函数,该函数通常可以在“”头文件中找到。

Escape 键的 ASCII 代码是 27。当您按下 Escape 键时,它会生成 ASCII 值 27。因此,我将稍微更改您的程序以获得您想要的结果:

    int main()
{
    tollBooth t;
    char key;

    while (key != 27)
    {   
        key = _getch();
        cout << "Choose:\n'p' paying car \n'n' nonpaying car \n'e' exit \n";
        if (key != 27)
            cout << key << endl;
        if (key == 'p')
            t.payingCar();
        else if (key == 'n')
            t.nopayCar();
        else if (key != 27)
            cout << "Invalid input"<<endl;
    }

    t.display();

    return 0;
}                

在上面的程序中,为了更好地理解,我使用了“key”而不是“c”。

© www.soinside.com 2019 - 2024. All rights reserved.