QBuffer 用法理解

QBuffer为Qtl里面的缓冲区类

缓冲区的本质就是一段连续的存储空间

在Qt中QBuffer可以看为一个特殊的IO设备

文件辅助类(QDataStream ,QTextStream)可以直接作用于缓冲区类

 

QBuffer和其他Io设备打开方式一样,都是由打开设备,读取设备,写入设备,关闭设备四大步骤组成,代码如下:

#include <QCoreApplication>

#include <QBuffer>

#include <QDebug>

#include <QByteArray>

#include <QDataStream>

 

void write_buffer(int type, QBuffer& buffer)   //写入缓冲区方法

{

    if( buffer.open(QIODevice::WriteOnly) )  //以只写方式打开缓冲区

    {

        QDataStream out(&buffer);

 

        out << type;

 

        if(type == 0)                           //写入数据

        {

            out << QString("badogyang software");

            out << 3.14159;

        }

        else if(type == 1)

        {

            out << 3;

            out << 1314;

        }

        else if(type == 2)

        {

            out << 531.135;

        }

 

        buffer.close();        //关闭缓冲区

    }

}

 

void read_buffer(QBuffer& buffer)

{

    if( buffer.open(QIODevice::ReadOnly) )

    {

        int type = -1;

        QDataStream in(&buffer);

 

        in >> type;

 

        if(type == 0)

        {

            QString s = "";

            double value = 0;

 

            in >> s;

            in >> value;

 

            qDebug() << s;

            qDebug() << value;

        }

        else if(type == 1)

        {

            int a;

            int b;

 

            in >> a;

            in >> b;

 

            qDebug() << a;

            qDebug() << b;

        }

        else if(type == 2)

        {

            double value = 0;

 

            in >> value;

 

            qDebug() << value;

        }

 

        buffer.close();

    }

}

 

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

 

    QByteArray array;

    QBuffer buffer(&array);

 

    write_buffer(0, buffer);

    read_buffer(buffer);

 

    return a.exec();

}

 

 

QBuffer的使用场合

--线程间不同类型的数据通信

--缓存外部设备的返回数据

--数据读取速度小于数据写入事

 

 

//文章参考狄泰软件学院Qt视频教程

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值