2013-04-05 13 views
7

Funktioniert das?Wie mache ich einen QString aus einem QTextStream?

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

QTextStream in(&filevar); 

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

} 

filevar.close(); 

Wird bozo die Gesamtheit von sometextfile.txt sein?

+0

Sie öffnen die Datei nicht, sehen Sie sich meine Antwort an. – dtech

+0

Danke für die Antworten. Ich baue eine BB10 App und leider kann ich das nicht zur Arbeit bringen. Ich bin mir sicher, dass es etwas anderes ist. Aber ich kann keine Antwort wählen, bis ich weiß, was sonst noch falsch ist. – Dave

+0

Nun, es sollte funktionieren, es ist einfach und unkompliziert. Debuggen Sie Ihren Code Schritt für Schritt und Sie werden Ihren Fehler finden. BB ändert QFile nicht, das Problem ist also Ihre Implementierung. – dtech

Antwort

16

Warum sogar Zeile für Zeile lesen? Man könnte es ein wenig mehr optimieren und unnötige Umschichtungen des Strings zu reduzieren, wie Sie Linien, um es hinzuzufügen:

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

Wie ddriver erwähnt, sollten Sie zunächst die Datei öffnen mit file.open(…); Other than that, ja bozo enthalten die gesamte Datei mit dem Code, den Sie haben.

Eine Sache in ddriver Code zu beachten ist, dass text.reserve(file.size()); weil in der folgenden Zeile nicht notwendig ist:

text = in.readAll(); 

Diese text durch eine neue Zeichenfolge ersetzt, so der Aufruf von text.reserve(file.size()); würde nur ungenutzt Arbeit getan hat.

+1

Ja, Sie haben Recht, es ist sinnlos, die Größe unter Berücksichtigung der Zeichenkette zu ändern, wenn man bedenkt, dass keine Anfangsdaten zum Anhängen vorhanden sind. werde meine Antwort auch reparieren ... – dtech

Verwandte Themen