salve a tutti vorrei chidervi come superare questo banalissimo problema. In pratica il mio programma all'avvio presenta un menu che permette di scegliere le operazioni da fare. ed il tutto funziona bene. Quando però finisce di eseguire una funzione lui ristampa il menu e anzichè attendere che si inserisca la lettera associata ad una funzione,stampa "ERRORE, Inserire valore corretto" ; come superare questo problema e attendere che si inserisca la lettera corretta senza andar in automatico al caso default?

codice:
void esempio::menu()
{
    //int choice;
    cout <<"                 MENU           "<<endl;
    cout <<"------------------------------------"<<endl;
    cout << "A) Generare una nuova coppia di chiavi" << endl;
    cout << "B) Firmare file" << endl;
    cout << "C) Verifica firma digitale" << endl;
    cout << "E) Esci dal programma" << endl << endl;

    string opzione;  
    bool flag =1 ; //flag controllo ciclo while
   while (flag)
      {

        cout<<"Inserire opzione: ";
        getline(cin, opzione); 
        cout<< "\n";

           if(opzione.length() >1)
           opzione = "z";

   switch (toupper(*opzione.c_str()) )
   {
     case 'A': create_key(); break;
     case 'B': select_and_sign(); break;
     case 'C': authenticate(); break;
     case 'D': cout << "Programma Terminato\n"; exit(0); break;
     
     default: cout << "ERRORE, ";
}
}
}