2013-04-05 11 views
7

Czy to działa?Jak wykonać QString z QTextStream?

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

QTextStream in(&filevar); 

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

} 

filevar.close(); 

Czy będzie to całość pliku sometextfile.txt?

+0

Nie otwierasz pliku, spójrz na moją odpowiedź. – dtech

+0

Dzięki za odpowiedzi. Buduję aplikację BB10 i niestety nie mogę tego uruchomić. Jestem pewien, że jest to coś innego, co robię. Ale nie mogę wybrać odpowiedzi, dopóki nie stwierdzę, co jeszcze jest nie tak. – Dave

+0

Cóż, to powinno działać, jest proste i proste. Debuguj swój kod krok po kroku, a znajdziesz swój błąd. BB nie zmienia QFile, więc problemem jest twoja implementacja. – dtech

Odpowiedz

16

Dlaczego nawet czytać linia po linii? Można go zoptymalizować trochę więcej i zmniejszyć niepotrzebne ponowne przydziały napisu jak dodać wiersze do niej:

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

As Ddriver wspomina, należy najpierw otworzyć plik za pomocą file.open(…); Poza tym, tak bozo będzie zawierać całość pliku za pomocą kodu, który posiadasz.

Jedną rzeczą, aby pamiętać w kodzie Ddriver jest to, że text.reserve(file.size()); jest zbędne, ponieważ na następującej linii:

text = in.readAll(); 

ten zastąpi text z nowym ciągiem więc wezwanie do text.reserve(file.size()); byłby po prostu zrobić niewykorzystaną pracy.

+1

tak, masz rację, nie ma sensu zmieniać rozmiaru, biorąc pod uwagę ciąg znaków, biorąc pod uwagę brak danych początkowych do dodania. poprawię też odpowiedź ... – dtech

Powiązane problemy