Devi usare il metodo clear e l'ignore ...

codice:
  if(!(cin >> value)) 
  {
     cout << "Error!\n"; 
     cin.clear();
     cin.ignore(100, '\n');
  }