Salve a tutti. Io in C, quando volevo svuotare il buffer di input facevo: fflush(stdin).
In C++ non so come fare, ovvero ho visto che l'oggetto cin non ha un metodo che si chiami fflush(o qualcosa che gli assomigli).
Sapete come posso fare?
Salve a tutti. Io in C, quando volevo svuotare il buffer di input facevo: fflush(stdin).
In C++ non so come fare, ovvero ho visto che l'oggetto cin non ha un metodo che si chiami fflush(o qualcosa che gli assomigli).
Sapete come posso fare?
funziona anche in c++
per fare una pulizia completa dello stream in c++ io uso:
adesso sei sicuro di poter riutilizzare il cin e di avere il flusso in ingresso ripulito.codice:cin.clear(); //riattiva il cin e cancella gli errori che sono avvenuti sul cin fflush(stdin); //cancella il flusso in ingresso
Ma è comunque il fflush del C? Cioè devo comunque includere stdio.h?
sinceramente non so se è lo stesso del c, comunque in c++ non serve l'inclusione di nessun header
Ecco un piccolo esempio veloce...
codice:#include <iostream> using namespace std; int main() { int a; bool ok=true; while(ok) { cout<<"inserisci a"<<endl; cin.clear(); //riattiva il cin nel caso di un errore nel flusso di ingresso fflush(stdin); //svuota il flusso in ingresso cin>>a; bool d=cin.fail(); cout<<d<<endl; } return 0; }
Non mischiare stream C e C++, usa piuttosto il metodo sync().
.codice:cin.sync();
Nota che, esattamente come accade con fflush, il suo effetto di svuotamento degli stream di input non è richiesto dallo standard, per cui in alcune implementazioni (solitamente le stesse in cui ciò accade anche con fflush) non ha alcun effetto.
Amaro C++, il gusto pieno dell'undefined behavior.
Bene, è proprio quello che cercavo. GrazieOriginariamente inviato da MItaly
Non mischiare stream C e C++, usa piuttosto il metodo sync().
.codice:cin.sync();
Nota che, esattamente come accade con fflush, il suo effetto di svuotamento degli stream di input non è richiesto dallo standard, per cui in alcune implementazioni (solitamente le stesse in cui ciò accade anche con fflush) non ha alcun effetto.
Di nulla; ciao!![]()
Amaro C++, il gusto pieno dell'undefined behavior.