Como posso evitar a entrada de caracteres para uma variável int?

O programa abaixo mostra um valor 'int' sendo inserido e sendo emitido ao mesmo tempo. No entanto, quando entrei em um caractere, ele entra em um loop infinito, exibindo o valor 'int' anterior inserido. Como posso evitar que um personagem seja inserido?

#include<iostream>
using namespace std;

int main(){
int n;

while(n!=0){
            cin>>n;
            cout<<n<<endl;
           }
return 0;
}