C++ 读空行容易
如果我想从以下数据中读取两个数字:C++ 读空行容易,c++,qt,fortran,C++,Qt,Fortran,如果我想从以下数据中读取两个数字: 1stLine "23" 2ndLine *(emptyline)* 3rdLine "45" 在Fortran中,这很容易,因为你只需要读取, 说READ(filename,*)Vari1,Vari2然后它将在中读取“23”和“45”。 (因为Fortran将多个连续的“\n”作为一个) 但是在Qt中,使用readLine()你必须阅读并使用另一个代码行来判断它是否是空的,有点烦人 是否有更好的方法可以轻松获取“23”和“45”?我的意思是,用最
1stLine "23"
2ndLine *(emptyline)*
3rdLine "45"
在Fortran中,这很容易,因为你只需要读取,
说READ(filename,*)Vari1,Vari2
然后它将在中读取“23”和“45”。
(因为Fortran将多个连续的“\n”作为一个)
但是在Qt中,使用readLine()
你必须阅读并使用另一个代码行来判断它是否是空的,有点烦人
是否有更好的方法可以轻松获取
“23”
和“45”
?我的意思是,用最少的代码,谢谢。这是我用FORTRAN编写的代码,可以让你像那样阅读,而且效果很好
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();
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()或新添加进一步的筛选详细信息 一般来说,如果有一件事情是在多行中完成的,但您希望它在一行中完成,那么您可以编写一个函数。谢谢。刚刚完成了简单的功能。我是一个多么懒的人啊,哈哈……这段代码不会编译,因为QString没有定义一元“!”操作人员如果(line!=“\n”)写
会更好吗?