0

如果我想从数据中读取两个数字,如下所示:

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

在 Fortran 中,这很容易,因为你只需要 READ,也就是说READ(filename,*) Vari1,Vari2它将读取“23”和“45”。(因为 Fortran 将多个连续的“\n”作为 ONE)

但是在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 回答