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视频教程

猜你喜欢

转载自blog.csdn.net/qq_37182906/article/details/84933682