[英]Qt reading file and mapping to QVector very slow (crashes)
所以我想做的就是读取文件并将其映射到二维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";
}
}
我的问题是,当处理1000,000行或更多行时,程序崩溃,并显示一条消息“此应用程序已请求运行时以异常方式终止它”。 有没有更有效的方法可以实现自己的目标? 如果可以,怎么办?
输入文件的格式可能如下
ID,NAME,AGE,GENDER ...等
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";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.