Mam taki problem: mam menu z ktorego wybieram opcje, w jednej z tych opcji wprowadzam dane z klawiatury - nazwisko - i jesli wprowadze je ze spacja lub tabem w srodku to wczyta tylko pierwsza czesc. Z tym jest spoko, moze tak byc. Caly problem w tym ze dalej pojawiaja sie na ekranie napisy i zeby uzytkownik mogl bylo je przeczytac musze zrobic jakas funkcje ktora czeka na ENTER. Jesli w podawaniu nazwiska dam spacje to funkcje wczyta ten enter ktory jest po drugiej czesci nazwiska. Jak sobie z tym poradzic? Jak mozna wyczyscic bufor cin??
sprubuj fflush(stdin);
Korzystam ze strumienie cin oraz cout z C++ wiec fflush(stdout) nie wchodzi raczej w gre.
zrob to tak wczytuj znak po znaku i sprawdzaj i
if(znak==32)//jesli znak to spacja
{
znak=jakis inny; //jesli wczyta spacje niech to zamieni na cos czego
//kompilator nie pominie potem przy wyswietlaniu odwrotni
//nie moga byc litery of course ani liczby najlepiej _
};
cos mi sie obsunelo ale sposob jest jedynyh dobry
cin też ma flush, chyba cin.flush() czy jakoś tak
cin nie ma ani operatora flush ani funkcji skladowej flush(). Kurcze, wydawalo mi sie ze to jest raczej standardowe pytanie, niezbyt trudne, a tu popatrz - nikt nie wie...
Nie wczytuje ci po spacji nazwiska bo prawdopodobnie robisz tak:
char buf[20];
cin >> buf;
Zrób tak:
const int n = 20;
char buf[n];
cin.getline(buf, n);