欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt中的缓冲区QBuffer

程序员文章站 2024-03-13 10:57:03
...

1 Qt中的缓冲区QBuffer

Qt中缓冲区的概念:

  • 缓冲区的本质为一段连续的存储空间。
  • QBuffer是Qt中缓冲区相关的类。
  • 在Qt中可以将缓冲区看作一种特殊的IO设备。
  • 文件流辅助类可以直接用于操作缓冲区。

QBuffer缓冲区的使用方式:
Qt中的缓冲区QBuffer
QBuffer缓冲区的使用场合:

  1. 在线程间进行不同类型的数据传递。
  2. 缓存外部设备中的数据返回。
  3. 数据读取速度小于数据写入速度。

编程实验:缓冲区操作

#include <QtCore/QCoreApplication>
#include <QBuffer>
#include <QByteArray>
#include <QDataStream>
#include <QDebug>

void write_buffer(int type, QBuffer& buffer)
{
    if( buffer.open(QIODevice::WriteOnly) )
    {
        QDataStream out(&buffer);

        out << type;

        if( type == 0 )
        {
            out << QString("D.T.Software");
            out << QString("3.1415");
        }
        else if( type == 1 )
        {
            out << 3;
            out << 1415;
        }
        else if( type == 2 )
        {
            out << 3.1415;
        }

        buffer.close();
    }
}

void read_buffer(QBuffer& buffer)
{
    if( buffer.open(QIODevice::ReadOnly) )
    {
        int type = -1;
        QDataStream in(&buffer);

        in >> type;

        if( type == 0 )
        {
            QString dt = "";
            QString pi = "";

            in >> dt;
            in >> pi;

            qDebug() << dt;
            qDebug() << pi;
        }
        else if( type == 1 )
        {
            int a = 0;
            int b = 0;

            in >> a;
            in >> b;

            qDebug() << a;
            qDebug() << b;
        }
        else if( type == 2 )
        {
            double pi = 0;

            in >> pi;

            qDebug() << pi;
        }

        buffer.close();
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QByteArray array;
    QBuffer buffer(&array);

    write_buffer(2, buffer);
    read_buffer(buffer);
    
    return a.exec();
}


参考资料:

  1. QT实验分析教程
相关标签: 所学所思所想