PaulS:
Almost never is my recommendation.
I have to agree.
For the situations where flush() dumps random amounts of unread data, I can't think of a single case where NOT reading the data is appropriate.
Other things I program has a ClearBuffer() function which comes in handi if I only need the first 4 bytes out of 100 or something. I can stop reading and clear the rest. But other than that, not too often do I not need all the information.