首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextStream扰乱其位置指针

QTextStream扰乱其位置指针
EN

Stack Overflow用户
提问于 2015-05-19 13:44:43
回答 1查看 274关注 0票数 2

我正在为文本文件编写解析器,但是QTextStream似乎遗漏了一些东西。我使用的是QT5.4.1,如果这很重要的话,代码是单线程的。

这是一种方法:

代码语言:javascript
复制
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;                                                                  
}

我要把它循环起来。第一个调用运行良好,但在第二个调用中,我得到了以下输出:

代码语言:javascript
复制
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内部指针都很好,但是在循环中完全混乱。

知道这里发生了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-19 17:59:01

有一些关于在几个现存的臭虫下面使用QTextStream::pos() 和IO设备的说法。他们中的许多人“未解决”或“不会解决”,他们的复制人案例看上去就像你的问题一样。

我建议避免依赖该函数(另外,引用QTextStream的文档

由于QTextStream被缓冲,此函数可能必须寻找设备来重建有效的设备位置。

它还会使事情在循环期间变慢)。

有关这方面的更多信息,也可以找到这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30327496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档