Çift yönlü yineleyici/bağdaştırıcıya sahip bir giriş dosyası akışına ihtiyacım var.dosya üzerinden çift yönlü yineleyici dosya/ifstream
Maalesef std::ifstream
(ve benzeri) yalnızca geriye doğru gidemeyen bir tür ileri yineleyici olan std::istream_iterator
ile kullanılabilir. (Ya da burada yanılıyorum?)
Tüm dosyayı belleğe yükleyebilir ve ardından dizi üzerinde çok daha güçlü bir rasgele erişimli yineleyici kullanabilirim; Ancak bundan kaçınmak ve gerçekten ihtiyacım olan kadar okumak istiyorum. Bir dosyanın sadece küçük bir kısmına gerçekten ihtiyacım olabilir.
Bunu bir şekilde C stdio.h
işlevlerini kullanarak yapabilirim, ancak bu acı verici olur. Temel olarak eldeki tüm özellikleriyle birlikte, iki yönlü bir yineleyiciyi uygulamaya ihtiyacım var.
iostream kütüphanesini desteklemeyi düşünüyorum, ancak el kitabı biraz bunaltıcı, bu özel hedefe ulaşmak için bana bir yardım verebileceğini umuyordum? Ya da belki de ihtiyacım olan şeyi yapmak için zaten var olan başka bir kütüphane var mı?
Dosyalarıma ayrıştırmak için yükseltici xpressive kitaplığı için yineleyiciye ihtiyacım var, bu da yineleyicinin artırılıp azaltılabileceğini umar. Okumak dosya tamponlu olsa iyi olurdu, ancak bu bir gereklilik değil.
Herhangi bir fikrin var mı? Teşekkür ederiz!
İki yönlü bir yineleyiciye ihtiyacınız olduğundan emin misiniz? Bir ileri yineleyici yeterliyse, [Boost.Spirit] (http://www.boost.org/libs/spirit/): [Destekleyen Kütüphaneler -> Çok geçişli yineleyici] (http: //www.boost) .org/kütüphaneleri/alkol/doc/html/alkol/destek/multi_pass.html). – ildjarn
Dosyanın bir parçasını tamponlayamaz, işlemlerinizi bunun üzerine yapabilir, geçici bir dosyaya yazabilir, sonra dosyanın bir sonraki bölümünü alabilirsin, vb. –
Anladığım kadarıyla sadece dosyayı haritaya aktaramazsın? Tabii ki daha az taşınabilir, ancak size rastgele erişim sağlar * ve * sadece gerçekten ihtiyacınız olan dosyanın bölümlerini okur (iyi, bu bölümlerin mahalleleri, bazı sayfa boyutlarına yuvarlanır). –