2013-04-05 19 views
7

Bu işe yarar mı?QTextStream'den QString nasıl oluşturulur?

QString bozo; 
QFile filevar("sometextfile.txt"); 

QTextStream in(&filevar); 

while(!in.atEnd()) { 
QString line = in.readLine();  
bozo = bozo + line; 

} 

filevar.close(); 

Bu sometextfile.txt dosyasının tamamı mı olacak?

+0

Dosyayı açamıyorsunuz, cevabıma bakın. – dtech

+0

Cevaplar için teşekkürler. Bir BB10 uygulaması yapıyorum ve maalesef bunu işe alamıyorum. Eminim bunu yaptığım başka bir şeydir. Ama başka neyin yanlış olduğunu anlayana kadar bir cevap seçemiyorum. – Dave

+0

Eh, işe yarayacak, basit ve basit. Kodunuzu adım adım hata ayıklayın ve hatalarınızı bulacaksınız. BB QFile değiştirmez, bu yüzden sorun uygulamanızdır. – dtech

cevap

16

Neden hatta satır satır okuyorsunuz? Biraz daha optimize ve buna satırları ekleyin olarak dize gereksiz yeniden tahsisleri azaltabilecek:

QFile file(fileName); 
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; 
QTextStream in(&file); 
QString text;  
text = in.readAll(); 
file.close(); 
3

öncelikle Bunun dışında file.open(…); kullanarak dosyayı açması gerektiğini, söz ddriver As, evet bozo içerecektir sahip olduğunuz kodu kullanarak dosyanın tamamı. text.reserve(file.size()); çağrısı sadece kullanılmamış işi yapardı böylece bu yeni dizeyle text yerini alacak

text = in.readAll(); 

: ddriver kodunda nota

bir şey text.reserve(file.size()); çünkü şu satırda gereksiz olmasıdır.

+1

evet, haklısınız, eklenecek ilk veri olmadığı düşünüldüğünde dizgeyi dikkate alarak yeniden boyutlandırmak anlamsızdır. Cevabımı da düzeltir ... – dtech