轻松读取空行

时间:2013-10-21 13:45:58

标签: c++ qt fortran

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

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

在Fortran中,这很容易因为你只需要READ, 说READ(filename,*) Vari1,Vari2然后它将显示为“23”和“45”。 (因为Fortran连续多次“\ n”为ONE)

但是在Qt中,readLine()你必须阅读并使用另一个代码行来判断它是否为空,有点烦人。

有没有更好的方法轻松获得"23""45"?我的意思是,用最少的代码,谢谢。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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()或新的。