¿Cómo evito un bucle de entrada desbocado cuando solicito un número pero el usuario ingresa un no número?

Necesito saber cómo hacer que mi declaración cin no parezca 'eliminarse' si ingresa el tipo incorrecto. El código está aquí:

int mathOperator()
{
  using namespace std;

  int Input;
  do
  {
    cout << "Choose: ";
    el();
    cout << "1) Addition";
    el();
    cout << "2) Subtraction";
    el();
    cout << "3) Multiplication";
    el();
    cout << "4) Division";
    el();
    el();
    cin >> Input;

  }
  while (Input != 1 && Input != 2 && Input!=3 && Input!=4);
  return Input;
}

Ejecute, ingrese, por ejemplo, un carácter, y se repite sin parar actuando como si la declaración cin no estuviera allí.

Respuestas a la pregunta(6)

Su respuesta a la pregunta