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

时间:2013-06-09 03:09:59

标签: c++ while-loop switch-statement cin

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 Bed\n"
                    << "2 - Find a Clothier Shop\n"
                    << "3 - Find a Blacksmith's\n";
            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);

嘿所以我这里有这段代码。每当我运行它时,它总是会跳过sububchoice的cin输入。它应该做的是接受输入,或者让你进入旅馆或者将这个选择应用于menuchoice并在do-while循环开始时重新启动你。我不知道为什么它会跳过输入然后关闭程序。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

也许您需要在cin.ignore()

之前添加cin >> subsubchoice;

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你在这里:

  1. cout中有一个缺少的分号&lt;&lt; “你很快就会回到温暖的旅馆,放松一下,度过一个温暖的夜晚,睡个好觉。你的健康状况会恢复到100岁。\ n”;

  2. 删除最后一个案例2:或添加休息时间;之后(更好地删除它,它没用)。

  3. 虽然(!boolchoice)保证是假的,因为为了输入forst,boolchoice必须是非零的。如果你想要它迭代,尝试使用while(gold)或while(health)退出,当你没有黄金或健康...

  4. 我希望这会有所帮助......