2013-04-05 8 views
7

これは機能しますか?QTextStreamからQStringを作成するには?

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

QTextStream in(&filevar); 

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

} 

filevar.close(); 

boometoはsometextfile.txtの全体ですか?

+0

ファイルを開かないでください、私の答えを見てください。 – dtech

+0

答えをありがとう。私はBB10アプリケーションを構築しています。残念ながら、これを動作させることはできません。私はそれが私がそうしている何か他のものであると確信しています。しかし、他に何が間違っているかを知るまで、答えを選ぶことはできません。 – Dave

+0

それはうまくいくはずです、それは簡単で簡単です。コードをステップバイステップでデバッグすれば、間違いを見つけることができます。 BBはQFileを変更しないので、問題はあなたの実装です。 – dtech

答えて

16

なぜ行単位で読み込むのですか?あなたはもう少しそれを最適化し、あなたがそれに行を追加すると、文字列の不要な再配分を減らすことができる:

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

ddriverが言及したように、まずbozoが含まれていますはい、それ以外file.open(…);を使用してファイルを開く必要がありますあなたが持っているコードを使用してファイル全体。 text.reserve(file.size());への呼び出しだけで、未使用の仕事をしていたので、

text = in.readAll(); 

これは新しい文字列でtextを置き換えます:ddriverのコードに注意する

ことの一つは、次の行にあるためtext.reserve(file.size());が不要であるということです。

+1

はい、そうです。追加する初期データがないと考えると、文字列を考慮してサイズを変更するのは意味がありません。私の答えを修正するつもりだ... – dtech