2015-07-06 31 views
7

Bulabildiğim tüm belgeler, std::basic_istream<>::ignore(n) "karakterleri ayıklayıp attığını" söylüyor, ancak bu çıkarımın ne anlama geldiğiyle ilgili çok açık değil.Bir std :: ifstream ile, karakterleri göz ardı etmek ve aramak arasında bir fark var mı?

Özellikle bir için, bir uygulama dosyada sadece seekg -ing ile eşdeğer hale getirebilir mi? Öyleyse, ana uygulama uygulamaları bunu yapar mı?

Aksi taktirde, karakterler gerçekten atılmadan önce "okunuyor" ise, seekg kullanılabilir olduğunda zayıf bir seçimdir (ör. Bir dosya veya dize akışı ile).

cevap

3

Evet, bir fark var.

Yalnızca bir kuralı olarak ele alsak bile, karakterleri ayıklamak akış durumu üzerinde bir etkiye sahiptir (çeşitli durum bayraklarını dikkate alın) ve the libstdc++ implementation'dan, ayıklanan karakterleri, arayan.

Karakterlerin üstünden atlamak için herhangi bir "optimizasyon" yapılmış olsaydı, bu gözlemlenebilir davranış farklı olurdu.

Bu "optimizasyon" u uygulamak için, akışın sonunu geçmemeye dikkat ederek, seekg işlemini gerçekleştirmelisiniz.

İlgili konular