2017-01-18 4 views
3

Qtファイルストリームのwhileループで>>演算子を使用するにはどうすればよいですか? (fin.atEnd()を使用する代わりに可能ですか?) 私がやりたいことは、行全体ではなく単語単位で単語をインポートすることです。ループ中にQtファイルストリームで>>演算子を使用する方法

QTextStream cout(stdout); 
QTextStream cin(stdin); 

int main() 
{ 
    //read & write a string to and from file 
    //open input file 
    QFile inData("input.txt"); 
    inData.open(QIODevice::ReadOnly); 
    QTextStream fin(&inData); //setup file stream input 

    //open ouput file 
    QFile outData("output.txt"); 
    outData.open(QIODevice::WriteOnly); 
    QTextStream fout(&outData); //setup file stream output 

    QString next; 

    //copy one file to another 
    while (fin >> next) ////////////////THIS LINE///////////// 
    { 
     next = fin.readLine(); 
     next += '\n'; 
     fout << next; 
    } 

    return 0; 
} 

ありがとう:ここに は私のコードは以下の、私は、問題の行をマークしているのですか?

この質問Read word by word from a text file in Qt4は単語のインポート部分を解決しますが、上記のように>>入力演算子を使用できるかどうかはまだ分かります。 (あなたがフィンのいずれかを使用することができ++標準C言語で>>()fin.eof次OR)operator>>

+0

可能な複製を(http://stackoverflow.com/questions/9352708/read-word-by- text-file-in-qt4) – talamaki

+0

なぜあなたは '' fin''''で 'next'を読んでいるのか、' next = fin.readLine(); '。他のすべての単語、または最初の単語がない行、またはそのようなものをすべて印刷しますか? –

答えて

0

ストリームの参照を返します。

QTextStream &operator>>(QTextStream &stream, QString &next); 

をしてQTextStream&boolの間には暗黙の型変換はありません。ただしそのように、このためQTextStream::Statusを使用することができます:[Qt4をテキストファイルからの単語で読み取りワード]の

while((fin >> next).status() == QTextStream::Ok) 
{ 
    //... 
} 
+0

Thx主な理由は、主にQtで可能なことを学び、それを標準のC++と比較することです。 – Rhdr

+0

@Rhdr Well Qtは魔法ではありません。これは、クロスプラットフォームで実行される標準C++です(各プラットフォームで自分で把握する必要はありません)。それはより洗練されたAPIを持っており、それを使用すると、サポートされているすべてのプラットフォーム上で修正されることなく動作することが保証されます。内部的には標準のC++を使用しているので、(これはしばしば苦痛であるため)必要はありません。 – Resurrection

+0

私はこの学期をQtで始めました。正直言って、まだ少し厄介です。それと私たちの教科書は、もう素人の言葉では書かれていませんが、私たちはそこに着くでしょう。 5月試験の前にこれをエースする必要がある – Rhdr

関連する問題