c++도 while(getchar()!=' ')로 stdin 비울 수 있음?


void ClearStdin(void)
{
 while (fgetc(stdin) != ' ');
}


 while (1)
 {
  opt = 0;
  ShowMenu();
  cout << "선택> ", cin >> opt;
  if (opt < 1 || opt>5)
  {
   cout << "1~5의 숫자를 입력해 주세요." << endl;
   ClearStdin();
   continue;
  }


.........



위 코드에서 opt에 입력받을때 adsde이렇게 막 영문자 입력하니까


   cout << "1~5의 숫자를 입력해 주세요." << endl;  실행되고


메뉴 출력하고 선택 지나쳐서 다시


   cout << "1~5의 숫자를 입력해 주세요." << endl; 여기로 돌아옴


이거 입력버퍼 안비워진거 아님??