Again, see "Flushing" the input stream
This is a discussion on Why I have to cin.ignore() ? within the C++ Programming forums, part of the General Programming Boards category; Again, see "Flushing" the input stream...
Prelude's articles tend to be complete. I don't think that means input is an insurmountable problem. A lot of detail goes into working with wide streams, and fixing other weirdness such as what happens if there is no input waiting in the stream when you ignore. These details are not relevant all of the time. I could plan my input so that such special cases never occur.
Additionally, I would handle EOF all of the time, sure, but that's well defined in the standard.
And you turned my simple correction into a debate. I didn't have any problem with what you said other than what I quoted. Fixing the stream state is easy, after which you'd call some version of ignore_line() from the article. After reading the article, of course.