Salve gente, per semplificarmi la vita mi sono creato 2 funzioni:
codice:
template <class tipo>
void keyb_set(tipo &var){
    std::string str;
    std::getline(std::cin,str);
    if (str == "exit" or str == "EXIT"){
        exit(0);
    }
    std::stringstream(str)>>var;
}

void keyb_set(std::string &str){
    std::cin>>str;
    if (str == "exit" or str == "EXIT") {
        exit(0);
    }
}
il fatto è che se faccio un programma dove faccio:
codice:
int n;
int n1;
string s;

keyb_set(s);

..operazioni..

keyb_set(n); //questa operazione viene saltata!!! n si prende il valore di 0 e Da qui torna a funzionare!

..operazioni...

keyb_set(n1); //funziona..
come mai? com'è possibile?