• 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

Mały hosting, OGROMNE możliwości
0 głosów
520 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,040 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 (22,630 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ź 953 wizyt
pytanie zadane 26 kwietnia 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)
0 głosów
1 odpowiedź 2,662 wizyt
pytanie zadane 21 stycznia 2017 w C i C++ przez qvo Obywatel (1,670 p.)
0 głosów
2 odpowiedzi 2,397 wizyt
pytanie zadane 2 stycznia 2017 w Java przez rubesom Obywatel (1,690 p.)

93,718 zapytań

142,631 odpowiedzi

323,262 komentarzy

63,266 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...