• 3490阅读
  • 1回复

QT的BUG?关于序列化和反序列化QDataStream问题 [复制链接]

上一主题 下一主题
离线wysxmu
 

只看楼主 倒序阅读 楼主  发表于: 2018-08-17
如下代码:输入1到30期望输出1到30,结果到13的时候,变成0 ,后面变成很大的数了,不知道是不是QT的BUG?


void Dialog::on_pushButton_out_clicked()
{
    //序列化按钮单击事件

    QFile f("D:/serialization.txt");
    if(!f.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        qDebug() << u8"文件打开失败!" ;
        return;
    }

    QDataStream ds(&f);
    for(int i=0;i<30;i++)
    {
         ds << i ;
         qDebug()<<"<<"<<i;//30+i就正常,只有“i”就不正常,int改为float也正常
    }
    f.close();
    qDebug()<<u8"序列化保存成功!";
}

void Dialog::on_pushButton_in_clicked()
{
    QFile f("D:/serialization.txt");
        if(!f.open(QIODevice::ReadOnly | QIODevice::Text))
        {
            qDebug() << u8"文件打开失败!" ;
            return;
        }

        QDataStream ds(&f);
        int a;
        while(!ds.atEnd())
        {
            ds >> a;
            qDebug()<<">>"<<a;//这里显示与输入不一致,从第13位起就不符合预期了
        }
         qDebug()<<u8"反序列化输出完毕!";

        f.close();
}
工程文件 streamTest.zip (8 K) 下载次数:0
离线wysxmu

只看该作者 1楼 发表于: 2018-08-18
我的问题已经解决:f.open(QIODevice::WriteOnly | QIODevice::Text))


去掉 QIODevice::Text)就可以了
快速回复
限100 字节
 
上一个 下一个