Qt读取文件和映射到QVector非常慢(崩溃)

Qt reading file and mapping to QVector very slow (crashes)

本文关键字:非常 崩溃 QVector 读取 文件 映射 Qt      更新时间:2023-10-16

所以我要做的是读取文件并将其映射到二维QVector。下面是我的代码

void dataModel::parseFileByLines()
{
QVector<QVector<QString> > dataSet;
lastError = "";
QRegExp reg(fileDelimiter);
QFile inFile(inputFile);
if (inFile.open(QIODevice::ReadOnly)){
    QTextStream fread(&inFile);
    long totalSize = inFile.size();
    QString line;
    while(!fread.atEnd()){
        line = fread.readLine();  
        dataSet.append(line.split(reg,QString::KeepEmptyParts).toVector());
   }
}else{
   lastError = "Could not open "+inputFile+" for reading";
}
}

我的问题是,当处理100万行或更多的程序崩溃的消息说:"这个应用程序已请求运行时以一种不寻常的方式终止它"。有没有更有效的方法来实现我的目标?

输入文件可以采用如下格式

ID、姓名、年龄、性别等

1,山姆,12

1000000

我将非常感谢任何帮助或建议

我在我的电脑上测试了这个(QList)版本,它比QVector版本运行得快得多,我也相信它不会崩溃。

void parseFileByLines(QString inputFile)
{
    QList<QList<QString> > dataSet;
    QString lastError = "";
    QFile inFile(inputFile);
    if (inFile.open(QIODevice::ReadOnly)){
        QTextStream fread(&inFile);
        long totalSize = inFile.size();
        QString line;
        while(!fread.atEnd()){
            line = fread.readLine();
            QList<QString> record = line.split('t',QString::KeepEmptyParts);
            dataSet.append(record);
        }
    }else{
        lastError = "Could not open "+inputFile+" for reading";
    }
}