hmm puedes hacer dos cosas con lo de las letras o haces un manejo de exepciones con try catch o puedes invertarte algo con los valores en ascii
Código:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string mensaje;
char a;
do
{
cout << "Ingresa una opcion: ";
cin >> a;
}while((int)a < 49 || (int)a > 52);
switch(a)
{
case '1':
mensaje = "escogiste 1";
break;
case '2':
mensaje = "escogiste 2";
break;
case '3':
mensaje = "escogiste 3";
break;
case '4':
mensaje = "escogiste 4";
break;
default:
break;
}
cout << mensaje << endl;
return 0;
}
P.D. Intenta eliminar los goto de tus programas, son malas maneras de programacion