• 6076阅读
  • 6回复

QTextStream文件读写正确但QDataStream出错的怪事【已解决】 [复制链接]

上一主题 下一主题
离线peterxj108
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-03
void Smallwindow::on_pushButton_clicked()
{
    QFile file(QString("data.txt"));
    quint16 qu16_a;int a=15;

    file.open(QIODevice::WriteOnly);//追加
    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_3);//改成TextStream时省略这句话

    qu16_a=quint16(a);
    out<<a;
    QMessageBox::information(this,tr("Success"),tr("A data %1 in quint16 has been written to the file \"data.dat\".\n")
                             .arg(qu16_a));
}

void Smallwindow::on_pushButton_3_clicked()
{
    QFile file(QString("data.txt"));
    quint16 qu16_a;int a;

    if(file.open(QIODevice::ReadOnly))
    {
        QMessageBox::information(this,tr("Button 2"),tr("Loaded\n"));
    }
    QDataStream in(&file);
    in.setVersion(QDataStream::Qt_4_3);

    in>>qu16_a;a=int(qu16_a);
    QMessageBox::information(this,tr("Button 2"),tr("qu16_a=%1\na=%2\n").arg(qu16_a).arg(a));
}

要实现的功能很简单,往data.txt里写入一个quint16的数据(15),再读出来用对话框显示。
但是我读出的数据都是0。
无法验证写入是否正确。当我用QTextStream时,读写结果都是正确的。
我在另一个工程中也用了QDataStream读写文件,那里文件读写比这个复杂得多,也没有出错,不知道这里为什么出错了。
[ 此帖被peterxj108在2010-04-03 22:55重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2010-04-03
写入 int,却尝试按 quint16读出,不出错才怪了 ^_^
离线peterxj108

只看该作者 2楼 发表于: 2010-04-03
啊……原来如此,太谢谢了,我回去看看……
离线peterxj108

只看该作者 3楼 发表于: 2010-04-03
引用第1楼dbzhang800于2010-04-03 20:44发表的  :
写入 int,却尝试按 quint16读出,不出错才怪了 ^_^


那为什么QTextStream不会有错?
离线yangfanxing
只看该作者 4楼 发表于: 2010-04-03
QTextStream就是按文本编码方式读出;相当于读字符串;管你是int还是XXXint
PHPWind好恶心。。。不想看这种界面。。。
离线peterxj108

只看该作者 5楼 发表于: 2010-04-03
原来如此,谢谢大牛
离线前世星辰
只看该作者 6楼 发表于: 2010-04-30
mark
I LIKE QT!!
快速回复
限100 字节
 
上一个 下一个