我已经实现了一个菜单,为了避免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键退出时才会退出。有什么办法可以解决这个问题吗?