while (cin>>liczba){...}
Ta pętla będzie się wykonywała dopóki nie będzie ustawiony bit EOF (koniec pliku) lub failbit( złe dane wejściowe).
Jako przykład:
int x;
cin >> x;
Przypuśćmy, że wpisaliśmy ciąg znaków. Co się wtedy stanie? Jak już wcześniej napisałem zostanie ustawiony failbit.
Pętla while(true){} to pętla nieskończona. Można ją zakończyć wyjściem z funkcji ( return) lub za pomocą break.
W warunku pętli nieskończonej musiałbyś napisać przynajmniej coś takiego:
while (true){
cin>>liczba;
if (cin.eof()) break; // tutaj przerywana jest pętla, gdy koniec pliku
}
PS.
Odsyłam do cpp0x.pl
a także do różnorakich książek. Polecam książkę C++ Szkoła Programowania dla uzupełnienia wiedzy.