You can wrap the ifstream iterator by one of the boost::iterator lib iterators. http://www.boost.org/libs/iterator/doc/index.html For example transform iterator can first apply some some function to a chunk or sequence (e.g. see if it is at the end of a chunk and read a new one if required) and return an element pointed to. With Kind Regards, Ovanes Markarian On Thu, March 8, 2007 10:46, shunsuke wrote:
Pfligersdorffer, Christian wrote:
Any suggestions? Maybe some iterator-magic can be done? How about Boost.Spirit file_iterator? That is a read-only RandomAccessIterator for files. http://spirit.sourceforge.net/distrib/spirit_1_8_3/libs/spirit /doc/file_iterator.html
Hello Shunsuke,
that's a good idea but unfortunately I cannot use this class in my case. I have some special decoding ifstreams doing decompression and the like. So I'd really need an iterator that takes an i(f)stream object in it's constructor and wraps that.
C++ has istream_iterator, but it seems useless in this case. In fact, istream_iterator can be converted into ForwardIterator using Boost.Spirit multi_pass iterator. http://spirit.sourceforge.net/distrib/spirit_1_8_3/libs/spirit/doc/multi_pas... Thus you can make portions before passing them to clients. But unfortunately multi_pass iterator may copy the whole range in many cases.
Regards,
-- Shunsuke Sogame
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users