Sprawdzanie poprawnosci wprowadzonych danych na linuxie

0

Witam. Wiem że problem jest zapewne dla was błahy ale proszę o wskazówkę/pomoc
Dlaczego ten krótki kod nie walidyzuje wprowadzanych danych tylko tworzy się nieskończona pętla gdy zamiast liczby wpisany zostanie jakiś znak np 'a'?
Dodam że mój OS to Linux

#include <iostream>
using namespace std;
int main()
{
int liczba;
cout<<"Podaj liczbe"<<endl;
cin>>liczba;


while(!(cin>>liczba))
{
    cout<<"Podales zly format danych"<<endl;
    cin.clear();
    cin.ignore();
    cin>>liczba;

}

return 0;
} 
1
#include <iostream>
using namespace std;

int main()
  {
   int liczba;
   cout<<"Podaj liczbe"<<endl;
   while(!(cin>>liczba))
     {
      cout<<"Podales zly format danych"<<endl;
      cin.clear();
      cin.ignore();
     }
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1