• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

GetAsyncKeyState nie działa czyszczenie bufora cin

Object Storage Arubacloud
0 głosów
181 wizyt
pytanie zadane 23 października 2020 w C i C++ przez adamos321 Nowicjusz (140 p.)
edycja 26 października 2020 przez adamos321

cześć

Mam program który wczytuje znaki z klawiatury do momentu wciśnięcia jakiegoś znaku a następnie prosi o wprowadzenie czegoś.

Problem polega na tym że gdy chcę coś wprowadzić wpisuje wszystkie znaki podane do momentu wciśnięcia enter lub gdy nie został on wciśnięty wypisuje je na ekran i czeka na wciśnięcie enter.

Próbowałem wyczyścić bufor fflush(stdin)  oraz cin.clear() cin.sync() ale nic to nie daje cin.ignore() również

int a;

while(true)
{
	if(GetAsyncKeyState(69)==-32767)//jeśli nacisnę e wypisze e
	{
		cout<<"e"<<endl;
	}

	if(GetAsyncKeyState(68)==-32767)//jeśli nacisnę d kończy pętle
	{
		break;
	}
}

cout<<"podaj a:";
//cin.clear();
//cin.sync();
//fflush(stdin);
//cin.ignore(10,'\n');
cin>>a;
/*po wciśnięciu eed wyświetli się
e
e
podaj a:eed
*/

cout<<"koniec";

 

komentarz 23 października 2020 przez NewEraOfPeace Gaduła (4,790 p.)
Nic praktycznie nie zrozumiałem z tego co napisałeś. To mocno śmierdzi problemem XY. Co chcesz zrobić faktycznie?
komentarz 23 października 2020 przez tkz Nałogowiec (42,000 p.)

@adamos321, Dlaczego używasz systemowego API? Masz getline, który również sobie z tym poradzi. Dodatkowo mała zamiana sprawi, że program będzie przenośny. 

komentarz 23 października 2020 przez adamos321 Nowicjusz (140 p.)
Chcę wczytać wszystko co zostanie wpisane na klawiaturze np. podczas gry w jakąś grę chce mieć ile razy wcisnąłem "w".
komentarz 23 października 2020 przez NewEraOfPeace Gaduła (4,790 p.)
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate

w takim razie będziesz musiał sprawdzać dla każdego klawisza
komentarz 23 października 2020 przez adamos321 Nowicjusz (140 p.)
to już mam zrobione ale teraz pojawił się opisany problem

1 odpowiedź

0 głosów
odpowiedź 23 października 2020 przez overcq Pasjonat (21,710 p.)
komentarz 26 października 2020 przez adamos321 Nowicjusz (140 p.)
również nie działa po wpisaniu np cin.ignore(10,'\n'); dalej wypisuje coś co już wcześniej wpisałem nawet gdy wcisnąłem enter

Podobne pytania

0 głosów
1 odpowiedź 448 wizyt
pytanie zadane 26 kwietnia 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)
0 głosów
1 odpowiedź 2,046 wizyt
pytanie zadane 21 stycznia 2017 w C i C++ przez qvo Obywatel (1,670 p.)
0 głosów
2 odpowiedzi 1,655 wizyt
pytanie zadane 2 stycznia 2017 w Java przez rubesom Obywatel (1,690 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...