qt写入double数组到txt文件后再次启动后读取都是0

Hi~770 2025-05-16 16:25:12

void MainWindow::update_slope_offset()
{
    //把slope和offset数据存到文件里,下次直接取出来用
    bool sloperet = slopefile.open(QIODevice::WriteOnly);  //以读写形式打开slope文件,返回true打开成功
    if(!sloperet)
    {
        qDebug() << "slope open falied:";
        return;
    }
    QDataStream saveslope(&slopefile);
    saveslope.setVersion(QDataStream::Qt_5_0);
    for(int i=0;i<320*256;i++)
    {
        saveslope << slope[i];
    }
    slopefile.close();
    bool offsetret = offsetfile.open(QIODevice::WriteOnly);  //以读写形式打开offset文件
    if(!offsetret)
    {
        qDebug() << "offset open falied:";
        return;
    }
    QDataStream saveoffset(&offsetfile);
    saveoffset.setVersion(QDataStream::Qt_5_0);
    for(int i=0;i<320*256;i++)
    {
        saveoffset << offset[i];
    }
    offsetfile.close();
    get_slope_offset();   //这里读的时候没问题,不是0
}

void MainWindow::get_slope_offset()
{
    printf("slope[0]=%.6f,offset[0]=%.6f\r\n",slope[0],offset[0]);
    //从文件中获取slope和offset
    bool sloperet = slopefile.open(QIODevice::ReadOnly);  //以读写形式打开slope文件,返回true打开成功
    if(!sloperet)
    {
        qDebug() << "slope open falied:";
        return;
    }
    QDataStream getslope(&slopefile);
    getslope.setVersion(QDataStream::Qt_5_0);
    for(int i=0;i<320*256;i++)
    {
        getslope >> slope[i];
        printf("get slope[%d]=%.6f\r\n",i,slope[i]);
    }
    
    slopefile.close();
    bool offsetret = offsetfile.open(QIODevice::ReadOnly);  //以读写形式打开offset文件
    if(!offsetret)
    {
        qDebug() << "offset open falied:";
        return;
    }
    QDataStream getoffset(&offsetfile);
    getoffset.setVersion(QDataStream::Qt_5_0);
    for(int i=0;i<320*256;i++)
    {
        getoffset >> offset[i];
        printf("get offset[%d]=%.6f\r\n",i,offset[i]);
    }
    offsetfile.close();
    if((slope[0] > 0.0001 || slope[0] < -0.0001) && (offset[0] > 0.0001 || offset[0] < -0.0001))
    {
        flag = true;
    }else
    {
        flag = false;
    }

    printf("slope[0]=%.6f,offset[0]=%.6f\r\n",slope[0],offset[0]);
}

我在工程开始的地方去调用get_slope_offset(),读出来的都是0,但是在写入之后,直接调用get_slope_offset(),数据是没问题的,就是下次启动再运行时,先调用get_slope_offset()读出来的都是0

 

 

...全文
62 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

直接用标准库的ifstream、ofstream,比用Qt的包装还简单~

forever74 05-21
  • 打赏
  • 举报
回复

选几个关键时间点亲自看一下数据文件内容不就明白了么?

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧