【发布时间】:2018-01-25 14:24:02
【问题描述】:
我必须解析一个包含数千条记录的大文件。我想显示一个进度条,但我不知道提前录制的数量。我必须滚动此文件两次吗?
- 第一个知道录音数量。
- 第二个进行治疗
或者有没有更简单的方法来获取记录数,而无需在处理之前遍历整个文件?
我的代码 sn-p:
void readFromCSV(const QString &filename){
int line_count=0;
QString line;
QFile file(filename);
if(!file.open(QFile::ReadOnly | QFile::Text))
return;
QTextStream in(&file);
while(!in.atEnd()){ //First loop
line = in.readLine();
line_count++;
}
while (!in.atEnd()) { //Second loop
...
line = in.readLine();
process();
...
}
}
感谢您的帮助
这个问题与这里的不同:counting the number of lines in a text file
1) 循环过程已经完成。在这种情况下是防止双重射击。
2) 代码是 QT 代码,而不是作为冗余添加的 C++ 函数
【问题讨论】:
-
Qt 不能处理你想要的,一般建议最好使用标准 C++,如果你想计算多少行你必须读取文件,没有其他方法.与您的实现相比,另一篇文章的解决方案是最佳的。Qt 使用 C ++,因此 C ++ 解决方案也是 Qt 解决方案
-
这个文件是从哪里来的?如果它是由您的应用程序生成的,您可以将记录数放在第一行。