Mit csinál pontosan a cin. Clear () ; utasítás?
Egy cin-es utasítás után, ha egy getline-os utasítást teszek, akkor a getline megkap egy input bufferből fennmaradó újsor karaktert (nem tudom, hogy a cin miért hagyja bent), viszont ha ürítem az input buffert, pl így:
while (cin.get() != '\n') {
continue;
}
Akkor nyugodtan elhelyezhetek egy cin-es és egy getline-os bekérést egymás után (tehát ha közéjük illesztem a fent említett kórdérszletet).
Viszont ha előzőleg az egyik cin-es bekérésnél érvénytelen értéket adok meg (pl szám bekérésénél karaktert, vagy karakter bekérésénél ékezetes karaktert), akkor az említett kódrészlet végtelen ciklust okoz, kivéve, ha szerepel előtte egy cin.clear();
a ciklus helyett egyszerűbb lesz azt használni ami az elfogadott válaszban van
Szófosás helyett nem lenne egyszerűbb ráguglizni?
Ez így azért jobb:
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!