QBuffer的基本使用

本文详细介绍了Qt中的QBuffer类,包括其作为特殊IO设备的应用,如何通过QDataStream进行数据读写操作,以及常见接口的使用方法。通过实例展示了如何利用QBuffer进行文件读写,并解释了其在QSharedMemory场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



来源:微信公众号「编程学习基地」

文章目录


QBuffer为Qtl里面的 缓冲区类

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

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

可以当成文件流一样使用

#include <QCoreApplication>
#include <QBuffer>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QFile file("main.cpp");
    QBuffer buffer;						//定义缓冲区
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() << file.errorString();
    }
    buffer.open(QBuffer::WriteOnly);	//缓冲区的打开方式写
    //往数据流里面输入数据
    while (!file.atEnd()) {
        QByteArray bateArray = file.readLine();
        buffer.write(bateArray.data(),bateArray.size());	//每次写入size大小字节
    }
    file.close();
    buffer.close();

    buffer.open(QBuffer::ReadOnly);		//缓冲区的打开方式读
    while(!buffer.atEnd())
    {
        QByteArray bateArray;
        buffer.read(bateArray.data(),128);	//每次读取128个字节
        qDebug()<<bateArray.data();
    }
    buffer.close();
    qDebug()<<"========================"<<endl;
    qDebug()<<buffer.buffer();						//输出读取到的数据

    return a.exec();
}

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

#include <QBuffer>
#include <QCoreApplication>
#include <QDataStream>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QBuffer buffer;						//定义缓冲区
    QString str = "hello",tmp;
    buffer.open(QBuffer::ReadWrite);	//缓冲区的打开方式读写
    QDataStream out( &buffer );			//数据流定向到缓冲区
    out << str;							//往数据流里面输入数据

    QDataStream in(&buffer);			//数据流定向到缓冲区
    buffer.open( QBuffer::ReadOnly);	//缓冲区的打开方式只读
    in >> tmp;							//读取数据流里面的数据
    qDebug()<<tmp;						//输出读取到的数据
    return a.exec();
}

QBuffer的一些常用接口

const QByteArray &buffer() const 获取缓冲区的数据
const QByteArray &data() const 获取缓冲区的数据(二进制流)
void setBuffer(QByteArray *byteArray) 设置缓冲区数据
void setData(const QByteArray &data) 设置缓冲区数据
void setData(const char *data, int size) 设置缓冲区数据

这里BiBi一句,buffer.data().data()获取缓冲区的地址

const char *from = buffer.data().data();    //指向数据

QBuffer应用场景:QSharedMemory共享内存读写时常搭配QBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeRoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值