I (tail -F
ne benzer bir şey) büyüyor bir dosyadan okumaya çalışıyorum ama benim koduyla bazı sorunlar olmalı: hatları olmadanC++ 'da büyüyen bir metin dosyası nasıl okunur?
string log, logFile("test.log");
size_t p = 0;
while(true)
{
ifstream ifs(logFile.c_str());
ifs.seekg(p); //*1
while(ifs.eof() == false)
{
getline(ifs, log);
cout << log << endl;
p = ifs.tellg(); //*2
}
nanosleep(&pause, NULL);
}
// * 1 ve // * 2, günlük dosyası sonuna kadar doğru okunur, ancak yeni satırlar eklenirse hiçbir şey olmaz.
Seekg ve tellg ile Dosyanın şu anki son konumunu saklamaya çalışıyorum, böylece yeniden açtığımda orada boğaza gidebilir ve nelerin eklendiğini okuyabilirim.
Kodumda neyin yanlış olduğunu bilmek istiyorum ve bu dosyayı aynı amaçla kapatmak ve yeniden açmak gerçekten gerekliyse.
Teşekkür ederiz.
düzgün çalışıyor. Teşekkür ederim. – Pietro
Eğer ifstream nesnesini döngüde oluşturursam işe yarayıp yaramadığımı fark ettim. Eklenmiş olanı okumak için bir dosyayı kapatmak ve yeniden açmak gerekli midir? – Pietro
@Pietro, bir sonraki okuma denemesinden önce 'ifs.clear()' diyerek 'ifstream' öğesinin eof durumunu temizlemeniz gerekir. Ben _think_ 'tellg()' ve 'seekg()' bu yaklaşımla gereksiz olacaktır. – hmjd