PDA

View Full Version : [c++]: switch


robs05
27-12-2008, 09:09
Salve,

in uno switch che prende la scelta come intero se viene inserito un carattere il programma va in loop. come posso eviter ciò mettendo un controllo, c'è un metodo che mi verifica se una variabile è stringa?

grazie

cionci
27-12-2008, 10:11
Dipende da come leggi l'input.

robs05
27-12-2008, 12:44
è un menu numerato, quindi prendo l'input come intero

cionci
27-12-2008, 13:49
è un menu numerato, quindi prendo l'input come intero
Ripeto: dipende da quali istruzioni usi per leggere l'input. Mi dovresti far vedere la parte di lettura, se usi cin basta visualizzare un messaggio di errore in caso cin.fail() sia vero e poi eseguire di nuovo la lettura resettando lo stato con cin.clear().

robs05
27-12-2008, 14:44
susami tanto allora questo è il codice:


while(true)
{
cout << " \n1) funzione 1 ";
cout << " \n2) funzione 2 ";
cout << " \n3) funzione 3 ";
cout << " \n4) Esci\n" << endl;

cout << "Scegli: ";
cin >> scelta;

switch(scelta)
{
case 1:
d->funzione1();
break;

case 2:
d->funzione2();
break;

case 3:
d->funzione3();
break;

case 4:
exit(0);
break;

default:
cout << "Scelta non consentita" << endl;
break;
}
}

cionci
27-12-2008, 14:49
Qui hai un'opzione più semplice ;)
Leggi un carattere:


char scelta;
while(true)
{
cout << " \n1) funzione 1 ";
cout << " \n2) funzione 2 ";
cout << " \n3) funzione 3 ";
cout << " \n4) Esci\n" << endl;

cout << "Scegli: ";
cin >> scelta;

switch(scelta)
{
case '1':
d->funzione1();
break;

case '2':
d->funzione2();
break;

case '3':
d->funzione3();
break;

case '4':
exit(0);
break;

default:
cout << "Scelta non consentita" << endl;
break;
}
}

robs05
27-12-2008, 16:15
graie mille. ho risolto