http://answers.yahoo.com/question/index?qid=20110507033952AAXZBz2 is a short explanation.
tellg(void) and tellp(void) both return their pointer’s position
------
ostream& endl (ostream& os);
------
stream::rdbuf() changes the filebuf... http://www.cplusplus.com/reference/ios/ios/rdbuf/
------
endl – flush() implicitly
------
If your variable to "populate" is an int, then extraction operator stops when hitting ...."any character that couldn't be part of an int" which is not limited to white space.