0

次のようにデータから2つの数値を読み取りたい場合:

1stLine "23"
2ndLine      *(emptyline)*
3rdLine "45"

READ(filename,*) Vari1,Vari2Fortran では、 "23" と "45" を読み取るなど、READ のみが必要なため、非常に簡単です (Fortran は複数の連続する "\n" を 1 つとして受け取るため)。

しかし、Qtでは、readLine()別のコード行を読んで使用して、それが空かどうかを判断する必要があり、面倒です。

"23"を簡単に取得するためのより良い方法はあり"45"ますか? つまり、最小限のコードで、ありがとう。

4

2 に答える 2

0
QFile file("your/file");
if(!file.open(QIODevice::ReadOnly)) {
    QMessageBox::information(0, "error", file.errorString());
}

QTextStream in(&file);

while(!in.contains("\n", Qt::CaseInsensitive)) {
    QString line = in.readLine();
    if(line != "\n"){
    ============================
    the jobs you want to be done
    ============================
    }  
}

file.close();
于 2013-10-21T14:38:53.567 に答える
0

FORTRANでそのようにREADするために書いたコードは次のとおりで、うまく動作します。

class FTextStream: public QTextStream
{
public:
    FTextStream(QFile *file);
    QString readLine2();
};

FTextStream::FTextStream(QFile *file)
    :QTextStream(file)
{}

QString FTextStream::readLine2()
{
    QString line;
    while(line.size() == 0){
        line = readLine();
    }
    return line;
}

ただし、空行をなくすだけでは不十分です。さらに、フィルタリングの詳細を readLine2() または新しいものに追加できます。

于 2013-10-22T01:35:19.383 に答える