QBuffer 用法理解

QBuffer为Qtl里面的缓冲区类

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

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

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

 

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

#include

#include

#include

#include

#include

 

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

你可能感兴趣的:(学习笔记,Qt)