C++程序在黑盒测试时终止

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

我已经实现了一个菜单,为了避免EOF字符的崩溃,我做了一些编码,但这个代码的问题是,当我在做黑盒测试(从文件中读入)时,程序是终止的,但我希望它继续。这是我写的主菜单代码。

int mainMenu()
{
    int choice = 0;
    cout << "Menu\n";
    cout << "----\n";
    cout << "1. New Game\n";
    cout << "2. Load Game\n";
    cout << "3. Credits\n";
    cout << "4. Quit\n\n> ";

    string input;

    getline(cin, input);
    bool valid = true;
    if (std::cin.eof()) {

        return 4;
    }
    char temp = (char)input[0];
    choice = static_cast<int>(temp) - 48;
    while ((input.size() != 1) || !(choice >= 1 && choice <= 4)) {

        cout << "Invalid Input, Enter again\n";
        cout << "> ";
        getline(cin, input);
        if (std::cin.eof()) {

            return 4;
        }
        char temp = (char)input[0];
        choice = static_cast<int>(temp) - 48;
    }
    return choice;
} 

我想这是... return 4; 是导致程序终止。我有一个txt文件,里面存储着数字3。所以当我通过这个文本文件输入时,那么它应该显示信用并继续执行进一步的命令。它应该只有在通过EOF字符或按4键退出时才会退出。有什么办法可以解决这个问题吗?

c++ unix g++ c++14
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.