Tam Sürümünü Görmek İçin : getline ve string
Volkan Uzun
02/09/2005, 23:42
selamlar,
getline(instream,string) de
string tam olarak ne kadar data gelecegini bilmiyor, bu durumda nasil surekli kendisini artiriyor ?
atilan exceptionlari catch edip surekli artiriyormu kendi kapasitesini ? sonucta instream den ne kadar tam olarak gelecegini bilmiyor.
acehreli
03/09/2005, 00:30
Uzunlugunu hep gereginden biraz fazla olarak tutuyor ve yeni gelen karakterleri oraya yaziyor.
Yeni bir karakter gelip de yer kalmadiginda kendisine daha buyuk yeni bir yer ayiriyor, kendi karakterlerini oraya kopyaliyor, eski bellegi birakiyor. vector ve diger topluluklar gibi yani...
Ali
acehreli
03/09/2005, 00:34
Aslinda sunu da eklemeliydim: string gelen karekterlerin akimdan geldigini bilmiyor ki... Bu isi getline biliyor. Herhalde akimdan bir karakter alir, ondan sonra string::push_back'i cagirir. Yani string'in durumdan haberi oldugunu sanmiyorum. Ama <string> basligina bakilabilir tabii... :)
Ben baktim... Burada
s += ch;
yapiliyormus.
Ali
Euclides
03/09/2005, 01:25
@sanal_programci:
gelen'i direkt string'e atmıyor. Önce kendi yönetiği bir miktar buffer ayırıyor(string'den bağımsız !), konsoldan gelen herşeyi ReadFile ile okuyor (ben cin ile denedim) Sonra senin string'e atıyor. Atacağı zaman elinde uzunluğunu hem kendi hemde string'in bildiği bir veri oluyor.
(SoftICE debug ederek bu kanıya vardım.)
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.