使用cin.fail()对输入失败进行故障检查

时间:2019-03-02 23:06:02

标签: c++ loops input conditional

我正在从事基于文本的冒险。我要创建的第一部分涉及六个房间(为了节省时间,我没有所有房间)。游戏开始时,您将被放置在一个随机的房间中,然后,您选择要进入下一个房间。

我遇到的问题是检查输入是否不是整数,然后使用循环请求另一个输入。现在,我读过的类似问题都说要使用cin.fail()isdigit(variable)。我已经尝试了两者,但代码仍然无法正常工作。当我运行程序并使用任一字母输入字母时,不允许我提供其他输入。

到目前为止,我的代码:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {

    // Variables

    bool game_play = true;
    bool game_start = true;
    int room_start;

    // Loops after game start and allows user to choose room

    while (game_play == true) {

        if (game_start == true) {
            srand((unsigned int)time(NULL));
            room_start = rand() % 3 + 1;
            game_start = false;
        }
        // This code doesn't accept another input after running
        else {
            cin >> room_start;
            while (cin.fail()) {
                cin.clear();
                cin >> room_start;
            }
        }

        switch (room_start) {
            case 1 :
                cout << "You are in room 1";
                break;
            case 2 :
                cout << "You are in room 2";
                break;
            case 3 :
                cout << "You are in room 3";
                break;
            case 4 :
                game_play = false;
                break;
            default :
                cout << "The room doesn't exist.";
                break;
        }

    }
    return 0;
}

0 个答案:

没有答案