Czyszczenie bufora pamięci [c++][SOLVED]

Witam, napisałem pewnien program kodujacy podany tekst

int main()

{

int operacja;

cout<<"Program kodujący i dekodujący każdy tekst, który złożony może być ze wszystkich 96 znaków drukowanych, możliwych do zapisania w kodzie ASCII\n";

cout<<"\nWybierz akcje\n1 - Szyfrowanie tekstu\n2 - Rozszyfrowanie tekstu\nDowolny znak aby zakończyć\n";

cin >> operacja;

while(operacja==1||operacja==2){

string tekst;

cout<<"\nPodaj tekst(znak nowej linii kończy wpisywanie):";

getline(cin, tekst);

int dlugosc = tekst.length();

if(operacja==1)

szyfrowanie(tekst, dlugosc);

else

rozszyfrowanie(tekst, dlugosc);

cout<<"Wybierz akcje\n1 - Szyfrowanie tekstu\n2 - Rozszyfrowanie tekstu\nDowolny znak aby zakończyć\n";

cin >> operacja;

}

return 0;

}

Problem w tym, że powybraniu opcji 1 lub 2 i wciśnięciu klawisza enter w pamieci pozostaje znak nowej linii i przy pytaniu o podanie ciagu znakow zostaje on zaladowany z pamięci i odrazu wykonuje sie opcja szyfrowania lub rozszyfrowania podanego ciagu znakow(przynajmniej mi się tak wydaje). Chciałbym więc jakoś wyczyścić tę pamięć lecz nie wiem jak i proszę o pomoc.

cin>>operacja;

cin.sync();

Dziekuję za rade. Pomogła ale połowicznie ponieważ ta komenda nie wystarcza, odpowiedź dlaczego znalazłem tutaj Problemy z czyszczeniem strumienia pod Linuksem. Teraz wszystko działa jak należy.

Tam ten sam sync() stoi.