Różnica między getchar a _getch

0

Cześć

Kiedy używam w kodzie

 _getch();

to wszystko mi działa ale już przy getchar();

 program nie działa poprawnie.
Znalazłem informacje, że wynika to z używania 
```cpp
 cin>>liczba;

i taki cytat, który miał wyjaśnić sprawę:

<quote> #define _getch       getch             /* for MSC compatibility */</quote> 

Ale powyższe jest dla mnie nie zrozumiałe.
Proszę o wyjaśnienie.

2

getch() - to twór z <conio.h>/ncurses - czyta "wprost" z klawiatury bez buforowania.
getchar() - to buforowany odczyt poprzez FILE* C style
cin - to buforowany odczyt poprzez klasę istream C++ style
Jakiekolwiek mieszanie tych 3-ch technik powoduje naprawdę nieprzewidywalne skutki.

4

getchar() to funkcja która robi coś innego niż _getch(), a mimo to każde użycie _getch na tym forum skutkuje komentarzem żebyś nie używał _getch tylko getchar...

_getch pobiera znak z bufora klawiatury i go zwraca. jeśli bufor jest pusty (czyli prawie zawsze) to czeka na klawisz i po jego naciśnięciu zwraca znak.
getchar pobiera znak z bufora klawiatury. jeśli bufor jest pusty (czyli prawie zawsze za pierwszym wywołaniem) to pozwala wpisać tekst z klawiatury zakończony enterem i zwraca pierwszy wpisany znak. reszta znaków pozostaje w buforze i będą zwracane kolejno przez następne wywołania getchar.

1 użytkowników online, w tym zalogowanych: 0, gości: 1