PDA

View Full Version : [C++] cin.get()


M4rk191
14-02-2009, 12:30
Per evitare la chiusura del programma (con interfaccia a caratteri) prima utilizzavo la funzione getch() che necessita dell'header conio.h il quale non appartiene allo standad iso e non è incluso in tutti i compilatori; per ovviare a questo problema ho iniziato ad utilizzare cin.get() che però non sortisce lo stesso effetto o meglio, per funzionare come la funzione getch() necessita di essere chiamata due volte:
cin.get()
cin.get()

:confused: come mai?

cionci
15-02-2009, 12:10
Perché l'ultima cin che hai fatto prima lascia almeno uno \n (ma potrebbe lasciare anche altro) all'interno dello standard input.
Devi prima svuotare lo standard input.

Le istruzioni per svuotarlo sono molteplici, tre esempi:

string buffer;
getline(cin, buffer);

oppure questo che fa molto c++:

cin.ignore(numeric_limits<streamsize>::max(), '\n');

(per questo sopra devi includere <limits>)
Altra alternativa:

while(cin.get() != '\n');