当前位置: 首页 > news >正文

缓冲区类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

 

http://www.lryc.cn/news/464176.html

相关文章:

  • 从一个事故中理解 Redis(几乎)所有知识点
  • MySQL程序介绍<二>
  • Java项目实战II基于Spring Boot的毕业就业信息管理系统设计与实现(源码+数据库+文档)
  • LeetCode 1343.大小为K且平均值大于等于阈值的子数组数目
  • 【电商项目】1分布式基础篇
  • PHP嵌套函数
  • 外包干了2个月,技术明显退步
  • kaptcha依赖maven无法拉取的问题
  • 48.旋转图像
  • 每天5分钟玩转C#/.NET之goto跳转语句
  • Java处理大数据小技巧:深入探讨与实践
  • 我开源了Go语言连接数据库和一键生成结构体的包【实用】
  • Sentinel 快速入门
  • 基于SpringBoot健康生活助手微信小程序【附源码】
  • 功能安全实战系列-软件FEMA分析与组件鉴定
  • 【数据结构与算法】链表(上)
  • svn-拉取与更新代码
  • 【C++ 算法进阶】算法提升四
  • 多种方式实现安全帽佩戴检测
  • 基于PHP+MySQL+Vue的网上订餐系统
  • Vue学习笔记 Class绑定 Style绑定 侦听器 表单输入绑定 模板引用 组件组成 组件嵌套关系
  • 【AIGC】ChatGPT与人类理解力的共鸣:人机交互中的心智理论(ToM)探索
  • 代码训练营 day39|0-1背包问题,LeetCode 416
  • LeetCode 203 - 移除链表元素
  • 【海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释】
  • HL7协议简介及其在STM32上的解析实现
  • TensorRT推理端到端
  • 获取历史的天气预报数据的网站
  • 【VUE】Vue中常用的修饰符
  • 数据分箱:如何确定分箱的最优数量?