当前位置: 首页 > 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.mrgr.cn/news/54145.html

相关文章:

  • gbn,sr和tcp的区别
  • linux file结构体与inode结构体
  • react18中如何实现同步的setState来实现所见即所得的效果
  • Java后端面试题:MySQL篇
  • 限制游客在wordpress某分类下阅读文章的数量
  • leetcode.204.计数质数
  • python-库
  • 【OD】【E卷】【真题】【100分】光伏场地建设规划(PythonJavajavaScriptC++C)
  • Chapter 2 - 7. Understanding Congestion in Fibre Channel Fabrics
  • mysql数据量分库分表
  • SOCKET与底层TCP协议的关系
  • 数据库产品中传输中的数据加密(Encryption in Transit)方法简介
  • 2061:【例1.2】梯形面积
  • STM32—FLASH闪存
  • 代码随想录算法训练营第十九天|Day19二叉树
  • long_long_type : 不是 boost 的成员
  • 【Python爬虫实战】从文件到数据库:全面掌握Python爬虫数据存储技巧
  • 重学SpringBoot3-Spring WebFlux简介
  • JUC并发编程进阶2:CompletableFuture
  • 光盘刻录大文件时分卷操作
  • 2-127基于matlab的非圆齿轮啮合动画设计
  • 怎么开发一款app软件
  • synchronized 锁字符串:常见坑点与解决策略
  • python-代码技巧
  • Redis可视化软件安装
  • Leecode刷题之路第25天之K个一组翻转链表