To expand on Colin's post, nothing happens on input in standard C/C++ functions until and end-of-line is seen. Even if you're parsing on whitespace (as with >>, by default), the buffer is not available for that extraction until a new line or EOF happens. The second extraction didn't use the newline because it doesn't return whitespace. I recommend that you reread the documentation for the various input mechanisms. They explain what is returned, what is not returned, and whether or not the things that are not returned are retained in the stream, or stripped. In your reading, you will also note that there ae failure mechanisms, and ways to see if they occurred. If they do occur, the stream is broken and will not function again until repaired. When I see a "cin" kind of operation without an accompanying test of the stream, I know that the writer is either a novice, who hasn't learned yet, or a schlock who doesn't care. You cannot depend on your user to provide what you expect, even if you have instructed the user on what that is. Users might be lazy, inattentive, malicious, ignorant, or just go to sleep with their forehead on the keyboard. Hell, you can't even depend on a file being read without error. Test your operations for success.