Qt读取文件和映射到QVector非常慢(崩溃)
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";
}
}
我的问题是,当处理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";
}
}
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- OpenGL大的3D纹理(>2GB)非常慢
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 非常简单的C++代码在Android上崩溃,但在OS X上运行良好
- Jsoncpp-当Json::reader超出作用域时,非常简单的测试崩溃
- Qt读取文件和映射到QVector非常慢(崩溃)