在do/while循环中跳过Cin输入

Cin input being skipped in do/while loop

本文关键字:Cin 输入 循环 do while      更新时间:2023-10-16
cin >> subchoice;
        switch(subchoice)
        {
        case 1:
            gold = gold - 5;
            cout << "Now you only have " << gold << " gold.n";
            cout << "blah blah";
            health = 100;
            break;
        case 2:
            cout << "blah blah"
                    << "1 - Head Back in and Buy a Bedn"
                    << "2 - Find a Clothier Shopn"
                    << "3 - Find a Blacksmith'sn";
            cin >> subsubchoice;
            switch(subsubchoice)
            {
            case 1:
                gold = gold - 5;
                cout << "Now you only have " << gold << " gold.n";
                cout << "blah blah"
                health = 100;
                break;
            case 2:
                menuchoice = subsubchoice;
                break;
            case 3:
                menuchoice = subsubchoice;
                break;
            }
        }
    break;
    case 2:
    }


} while (!boolchoice);

嘿,我有这段代码。不管我什么时候运行它,它总是跳过subsubchoice的cin输入。它应该做的是接受那个输入然后要么让你进入客栈要么把那个选择应用到menuchoice然后在do-while循环的开始重新启动你。我不知道为什么它跳过输入,然后关闭程序。

也许您需要在cin >> subsubchoice;之前添加cin.ignore()

你能解释一下你的输入格式吗?Cin读取所有输入,直到找到空白字符('n', 't', ' '等)。是否有可能在原始输入中插入空白,例如"21"?

给你:

  1. 在cout <<你很快回到温暖的旅店,在温暖的夜晚放松下来,睡个好觉。你的生命值恢复到100.n";

  2. 删除最后一个case 2:或添加break;

  3. while (!boolchoice)保证为false,因为为了进入森林if, boolchoice必须是非零的。如果你想让它迭代,尝试使用while(黄金)或while(健康)退出时,你要么是黄金或健康…