c++ - 让指针回到第一行 - QFile

标签 c++ qt file qfile

从文件中读取数据并将其保存在 QHash 中,如下所示:

 QHash<int, QVector<float> >

我的数据文件不包含标题,所以当我第一次创建 vector 然后进入文件循环时,我错过了第一行的数据。我的来源是:

    QFile file("...\\a.csv");
    if(!file.open(QIODevice::ReadOnly))
    {
        QMessageBox::warning(0, "Error", file.errorString());
    }

    QString fileLine = file.readLine();
    QStringList fileLineSplit = fileLine.split(',');
    hashKeySize = fileLineSplit.size();

    for(int t=0; t<hashKeySize; t++)
    {
        QVector<float> vec;
        hash_notClustered[t] = vec;
    }

    while(!file.atEnd())
    {
        QString line = file.readLine();
        QStringList list = line.split(',');
        for(int t = 0; t<list.size(); t++)
        {
            hash_notClustered[t].push_back(list[t].toFloat());
        }
    }

问:在使用while(!file.atEnd()) 循环时,如何让指针回到第一行而不错过第一行?

最佳答案

使用 file.close() 关闭文件

for(int t=0; t<hashKeySize; t++)
    {
        QVector<float> vec;
        hash_notClustered[t] = vec;
    }

并在 while(!file.atEnd()){...} 解决问题之前重新打开它。

关于c++ - 让指针回到第一行 - QFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430071/

相关文章:

c++ - 已编译的应用程序想要从绝对路径加载 DLL

python - 如何设置初始宽度可以使用QListWidget并使用splitter来调整大小?

node.js - 保存字节数组到文件 Node JS

c - 如何使用文件结构?

c++ - 从 libcurl 提供的流中读取 jpeg

c++ - 使用自定义特征和 bool 类型的 c++11 枚举时出现 clang 编译错误

c++ - 无法生成 gRPC 服务类

c++ - Boost 图的自定义 InputIterator (BGL)

c++ - 未显示继承类

android - 如何在 Android 上的 React Native 中读取带有内容 URI 的文件?