Попробуйте:
#include <iostream>
using namespace std;
int hallwayask();
int main()
{
hallwayask();
}
int hallwayask()
{
int input;
bool flag = true;
while (flag)
{
cout << "1: Door 1 \n2: Door 2 \n3: Door 3 \n4: Door 4\n";
cin >> input;
if (cin.good())
{
switch(input)
{
case 1:
cout << room1();
flag = false;
break;
case 2:
cout << room2();
flag = false;
break;
case 3:
cout << room3();
flag = false;
break;
case 4:
cout << room4();
flag = false;
break;
default:
cout << "Please enter a valid number." << endl;
break;
}
}
else
{
cout << "Invalid input, enter an int" << endl;
cin.clear();
cin.ignore(INT8_MAX, '\n');
}
}
}
Я устанавливаю флаг bool в значение true, и хотя это правда, он будет go включаться вечно, но как только пользователь введет правильное число (1-2- 3-4) Я устанавливаю флаг в ложь, поэтому он остановится.
Подумайте об этом так: пока true, сделайте этот блок кода, если false остановите. Таким образом, время будет длиться вечно, если это правда, но как только я введу 1-2-3-4, я остановлю время, пока l oop.
Я уверен, что есть другие способы сделать это; Я всегда полагался на флаг true / false для этого, но доступны и другие варианты.