如果我想从数据中读取两个数字,如下所示:
1stLine "23"
2ndLine *(emptyline)*
3rdLine "45"
在Fortran中,这很容易因为你只需要READ,
说READ(filename,*) Vari1,Vari2
然后它将显示为“23”和“45”。
(因为Fortran连续多次“\ n”为ONE)
但是在Qt中,readLine()
你必须阅读并使用另一个代码行来判断它是否为空,有点烦人。
有没有更好的方法轻松获得"23"
和"45"
?我的意思是,用最少的代码,谢谢。
答案 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()或新的。