首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDataStream未按预期工作

QDataStream未按预期工作
EN

Stack Overflow用户
提问于 2017-11-23 12:18:44
回答 1查看 373关注 0票数 0

我将一些数据存储在QDataStream中,并立即获取数据,但是在检索时计数显示为零。代码看起来很好,但行为出乎意料。

代码语言:javascript
复制
//Overloading
QDataStream& operator<< (QDataStream& writeTO, const CascadeJobInfo& data)
{
    writeTO << data.m_infoJobType << data.m_connectionName << data.m_submitJobId << data.m_submitJobStat;
    return writeTO;
}

QDataStream& operator>> (QDataStream& readIn, CascadeJobInfo& data)
{
    readIn >> data.m_infoJobType >> data.m_connectionName >> data.m_submitJobId >> data.m_submitJobStat;
    return readIn;
}

void Fun()
{
        // Code Starts here
    projectFileName = /*Path to folder*/
    QFile file(projectFileName);
    file.open(QFile::ReadWrite);
    file.close();

    QDataStream dStream(&file);
    int jobLstCount = /*Get the Count, assume 4*/
    dStream << jobLstCount;

    for(int i = 0; i < jobLstCount; i++)
    {
    JobInfo.m_infoJobType = jobFlowItem->getJobType();
    JobInfo.m_connectionName = submitItem->connectionName();
    JobInfo.m_submitJobId = submitItem->jobID();
    JobInfo.m_submitJobStat = submitItem->jobState();
        // All valid data stored here
    }

    file.close();

    QDataStream dStreamOut(&file);
    dStreamOut >> jobLstCount; /*Count returns zero here insted of 4*/
    CascadeJobInfo jobInfo;
    // Why jobLstCount is getting zero here
    for(int i = 0 ; i < jobLstCount ; i++)
    {
    dStreamOut >> jobInfo;
    } 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 12:41:22

代码语言:javascript
复制
   file.open(QFile::ReadWrite);
   file.close(); <--- HERE

   QDataStream dStream(&file);

打开该文件后,您将立即关闭它,因此基本上您使用的是一个无效的文件描述符,该描述符无法工作。完成后,将file.close()放在代码的末尾。

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

https://stackoverflow.com/questions/47455428

复制
相关文章

相似问题

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