[C++] gwiazdki zamiast hasła visual studio

Cześć

Piszę sobie bankomat, i prowadzącemu zamarzyło się gwiazdki zamiast hasła. No i zaimplementowałem wpisywanie, backspace (działają przyzwoicie), jednak coś delete wariuje.

#include

#include

#include"conio.h"

using namespace std;


void main() 

{ 

    int licznik=0;

	char c; 

	string lan="";

	cout<<"Podaj haslo :";

    while((c=getch())!=13) 

	{		

		if((c!=8)&&(c!=-32)) //8 backspace, -37 delete

		{

			lan=lan+c;

		    cout<<"*";

		}

		else if(c==-32) <-

		{

			system("cls");

			cout<<"Podaj haslo :";

			lan="";

			fflush(stdin);

		}

		else if(c==8)

		{

			system("cls");

			cout<<"Podaj haslo :";

			lan=lan.erase(lan.length()-1,1);

			for (int i=0;i
				cout<<"*";

		}

	}

	system("pause");

}

Wiem że mieszam c i c++ (zwłaszcza ta conio.h - getch), a tak się robić nie powinno, jednak chyba nie ma innego sposobu na rozwiązanie tych durnych gwiazdek (samodzielna implementacja getch mi się jakoś nie uśmiecha) … Po naciśnięciu delete, wykonuje się zaznaczony strzałką blok. Problemem jest to że zaraz następuje wykonanie kolejnego kroku pętli (bez wciśnięcia żadnego klawisza), i do zmiennej lan wędruje znak"S" (wykonuje się pierwszy blok ifa). Macie jakieś pomysły z kąd się bierze to owe felerne “S” ??

Z tego co pamiętam, klawisze specjalne przesyłają 2 kody do bufora. I oba musisz ściągnąć.

Bingo. dorzuciłem getch() wewnątrz bloku programowego i wszystko pięknie śmiga. Ale to trochę dziwne, bo z zachowania programu wynikałoby że backspace nie jest klawiszem specjalnym …