qtextstream弄乱了其位置指针
QTextStream messing its position pointer
我正在为文本文件编写解析器,但是qtextstream似乎缺少某些内容。我正在使用QT 5.4.1,如果这很重要,则代码是单线程。
这是方法:
const Event* AviLogFile::nextEvent() {
qDebug() << "Entering nextEvent()";
qDebug() << "m_file.pos() before QTextStream: " << m_file.pos();
QTextStream in(&m_file);
qDebug() << "m_file.pos() after QTextStream: " << m_file.pos();
qDebug() << "in.pos(): " << in.pos();
Event* ev = 0;
while (!in.atEnd() && ev == 0) {
QString line = in.readLine();
qDebug() << "(inside loop) m_file.pos(): " << m_file.pos();
qDebug() << "(inside loop) in.pos(): " << in.pos();
ev = parseEvent(line);
}
m_currentEvent = ev;
if (!ev) {
qDebug() << "in.AtEnd: " << in.atEnd() << ". file.atEnd: " << m_file.atEnd();
}
return ev;
}
我正在循环打电话。第一个电话可以正常工作,但是在第二个电话中,我得到了此输出:
Entering nextEvent()
m_file.pos() before QTextStream: 2244
m_file.pos() after QTextStream: 2244
in.pos(): 2244
(inside loop) m_file.pos(): 18628
(inside loop) in.pos(): 65
您可以看到,进入循环之前,qtextstream和qfile内部指针很好,但在环内完全混乱。
对这里发生的事情有任何想法吗?
在下方使用io设备使用QTextStream::pos()
有几个常规错误。其中许多是" 未解决的"或" 不会修复",他们的复制器案例看起来完全像您的问题。
我建议避免依靠该功能(加上QTEXTStream的文档:
由于qtextstream被缓冲,因此此功能可能必须寻求设备以重建有效的设备位置。
它在循环过程中也会使事情变慢)。
也可以在此处找到更多有关此的信息
相关文章:
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- C++指针数组到字符数组中的特定位置
- 声明指针时更改星号的位置
- 如何在单个链表中交换两个节点的位置,只修改指针
- 当原始数据是常量时,修改指针指向的位置是 UB 吗?
- 如果访问对象,则指向的对象内部的指针会更改内存位置
- 访问违规读取位置传递指针以在c中写入的DLL中起作用
- 如何在内存位置取消指针,并用值启动它
- C++ - 智能指针 - 访问冲突读取位置0xDDDDDDDD
- 最简单的方法使多个指针一次指向同一位置,一次只处理2个位置
- 在指针中保存确定的位置
- 通过在此指针上放置新位置重新初始化对象时未定义的行为
- Visual Studio 中的"指向引用的指针"错误不会按发生位置的文件名显示
- 将指针数组传递给数组,以便在 malloc() 发生的位置发挥作用
- 为什么在递增后使用 [] 运算符访问指针数组会返回错误地址的当前内存位置
- 试图读取AIFF文件意外错误与指针位置等有关
- 使用指针在字符串中获取字符的位置
- qtextstream弄乱了其位置指针
- 我如何知道一个位置指针在二维数组的行数
- 修正:访问冲突读取位置(指针到字符串数组)