【发布时间】:2016-02-18 18:30:35
【问题描述】:
我有一个关于 QTextStream 使用 pos() 方法计算什么的问题。我认为这是字节数,但似乎情况并非如此。
我问的原因是,我正在处理文件中的行,一旦读取的行数达到某个任意数字或stream.atEnd() 为真,我就会跳出循环并将stream.pos() 保存到@ 987654324@ 变量。处理完成后,我会返回文件和 seek(*filePosition) 以返回上一个位置并获取更多数据,直到 stream.atEnd() 为真。从某种意义上说,这可以跟踪我的位置,但是调用stream.pos() 非常慢,如Qt 文档中所述。
我正在尝试的是在以有效方式读取每一行后更新文件位置。但是,它不起作用,当程序返回再次读取文件时,位置不正确,因为它读取的第一行从上次迭代读取的行的中间开始。
这是目前为止的内容:
QTextStream stream(this);
stream.seek(*filePosition);
int ROW_COUNT = 1;
while (!stream.atEnd()) {
QString row = stream.readLine();
QStringList rowData = row.split(QRegExp(delimiter));
*filePosition += row.toUtf8().size();
/*
processing rowData...
*/
if (ROW_COUNT == ROW_UPLOAD_LIMIT) {
break;
}
ROW_COUNT++;
}
/*
close files, flush stream, more processing, etc...
*/
【问题讨论】:
标签: qt qt4 qt4.8 qtextstream