|
Boost Users : |
From: Ovanes Markarian (om_boost_at_[hidden])
Date: 2007-03-08 05:02:30
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_pass.html
> 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_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net