Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 读空行容易_C++_Qt_Fortran - Fatal编程技术网

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”)写
会更好吗?