为项目和循环创建简单的控制菜单会比预期打印提示的次数更多

Creating a simple control menu for a project and a loop prints a prompt more times than expected

本文关键字:打印 提示 循环 项目 创建 简单 菜单 控制      更新时间:2023-10-16

我使用此代码的目的是使用 switch 语句充当我正在处理的项目的简单控制菜单。这段代码的问题在于,第一个"cout"语句像这样打印出两次:

你想做什么? (按一封信):

你想做什么? (按一封信):

而不是我所期望的:

你想做什么? (按一封信):

这是我的代码(为了可读性,我删除了 case 语句中的所有内容):

char cMenu;
while (true) {
        cout << endl << "What would you like to do?" << endl <<"(Press a letter): " << endl;
        cin >> cMenu;
        switch (cMenu)
        {
        case 'C':
        case 'c':
        {
            cout << "*";
            break;
        }
        case 'J':
        case 'j':
        {
            cout << "*";
            break;
        }
        case 'S':
        case 's':
        {
            cout << "*";
            break;
        }
        case 'X':
        case 'x':
            cout << "*";
            break;
        }
    }

感谢您/lcs 提醒我"cin.ignore"的存在。

我的解决方案是添加以下行:

 cin.ignore(100,'n');

就在我获得"cMenu"的输入以忽略任何前导新行之前。