双方向イテレータ/アダプタを持つ入力ファイルストリームが必要です。ファイル/ ifstreamの双方向イテレータ
残念ながら、std::ifstream
(以下同様)は、逆方向に進むことのできない順方向イテレータの一種であるstd::istream_iterator
でのみ使用できます。 (または、私がここに間違っています?)
私は単にメモリにファイル全体をロードし、アレイの上にはるかに強力なランダム・アクセス反復子を使用することができます。しかし、私はそれを避けたいと思って、私が本当に必要とするものだけを読む。私は本当にファイルのほんの一部しか必要としないことがあります。
私は何とかそれを手動でCにstdio.h
機能を使用して行うことができますが、それは痛みを伴うだろう。私は基本的に、その仕様を念頭に置いた双方向イテレータを手作業で実装する必要があります。
私はブーストiostreamライブラリに探して検討していますが、マニュアルはやや圧倒的で、私は誰かがこの特定の目標を達成するために私の手を与えることができる期待していましたか?あるいは、私が必要とするものをまさに実行するための既存のライブラリがもう1つありますか?
私はイテレータがインクリメントだけでなく、減算することができますことを期待し、私のファイルを解析するために、ブーストxpressiveライブラリのためのイテレータを必要とします。これは必須条件ではありませんが、私が読んでいるファイルがバッファリングされていれば問題ありません。
アイデア? ありがとうございました!
双方向イテレータが必要ですか?前方イテレータは十分であろう場合は、[Boost.Spirit](http://www.boost.org/libs/spirit/)あなたがカバーしている:[ライブラリのサポート - >マルチパス・イテレータを](HTTP://www.boost .org/libs/spirit/doc/html/spirit/support/multi_pass.html)。 – ildjarn
ファイルの一部をバッファしたり、操作したり、一時ファイルに書き込んだり、ファイルの次の部分を取得したりすることはできませんか? –
私はそれを取るだけでメモリマップファイルできないのですか?もちろんポータブルではありませんが、ランダムアクセスが可能です。*実際に必要なファイルの部分だけが読み込まれます(まあ、ページサイズに切り上げられた部分の近傍)。 –