I would like to get an istream_iterator-style iterator that returns each line of the file as a string rather than each word. Is this possible?
You could write your own iterator. It's not that hard. An iterator is just a class on which (simply speaking) the increment and * operators are defined.
Look at http://www.drdobbs.com/cpp/184401417 to get started writing your own iterators.