缓冲区类QBuffer

1、QBuffer继承自QIODevice

2、是一种随机设备

3、和QFile类似,

4、有了 QBuffer,你可以把 QByteArray 当成文件一样来操作

其主要作用就是像QFile操作文件一样来操作一块QByteArray(内存区域),比如读和写

常用方法

构造函数

  • 在构造函数中指定要操作的QByteArray
  • QBuffer(QByteArray *byteArray, QObject *parent = nullptr)
  • 默认构造函数也可以不指定QByteArray,QBuffer自己内部会生成
  • QBuffer(QObject *parent = nullptr)

设置QByteArray

也可以通过下面2个函数来指定要操作的QByteArray

void setBuffer(QByteArray *byteArray)
void setData(const QByteArray &data)

获取关联的QByteArray

QByteArray &buffer()
const QByteArray &buffer() const
const QByteArray &data() const

举例:

像文件一样来操作QByteArray

QByteArray ba;
QBuffer buffer;

buffer.setBuffer( & ba); //设置QByteArray
if (buffer.open(QIODevice::ReadWrite)) //打开QByteArray
{
    buffer.write("你好世界"); //往里面写数据
    buffer.close();
} else {
    qDebug() << buffer.errorString();
}

qDebug() << ba.constData(); //打印下里面的数据

写入二进制数据

QByteArray byteArray;
QBuffer buffer( & byteArray);
buffer.open(QIODevice::WriteOnly);

QDataStream out( & buffer);
out << QApplication::palette();//将画板信息写入到QBuffer关联的QByteArray中

读取二进制流

QPalette palette;
QBuffer buffer( & byteArray);
buffer.open(QIODevice::ReadOnly);

QDataStream in ( & buffer);
in >> palette;

往指定位置写入数据

QByteArray byteArray("abc");
QBuffer buffer;
buffer.setBuffer( & byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);//光标位置往后移动3个,移到c的后面
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"

学习链接:https://github.com/0voice

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值