PDA

Visualizza la versione completa : [c++] a cosa serve l'istruzione cin.sync()?


g.b99pm10
09-04-2013, 18:23
premetto che sono un novellino e, quindi qualcuno pu spiegarmi a parole povere a cosa serve questa istruzione e la sua sintassi?

MItaly
09-04-2013, 18:56
Come al solito con gli stream C++ la questione non semplicissima.
cin.sync() chiama cin.rdbuf()->pubsync(), che a sua volta chiama cin.rdbuf()->sync(); questa in sostanza dovrebbe scartare tutti i caratteri rimasti nel buffer di input.
Il problema che non ben definita dallo standard la "politica di gestione" del buffer di input di cin, per cui il comportamento vero e proprio varia considerevolmente da un'implementazione all'altra (o addirittura nella medesima implementazione a seconda dell'aver impostato o meno la sincronizzazione con gli stream C).
Ergo, a priori non serve a molto, un po' come fflush(stdin) in C; nota che invece sync applicato su stream di output ha comportamento ben definito.

g.b99pm10
09-04-2013, 19:47
grazie molte! :ciauz:

MItaly
10-04-2013, 01:10
:ciauz:

Loading