QT中流Qbuffer的应用总结
来源:互联网 发布:java发邮件添加附件 编辑:程序博客网 时间:2024/06/12 08:34
一:概述
1) QBuffer 继承类QIODevice,如下:
class Q_CORE_EXPORT QBuffer : public QIODevice
2) QIODevice中有本文应用的函数:
(1)qint64 write(const char *data, qint64 len);
(2) qint64 read(char *data, qint64 maxlen);
(3)virtual bool open(OpenMode mode);
(4) virtual void close();
(5)virtual bool seek(qint64 pos);
3) 本位用到的GMemoryStream是从Qbuffer继承而来,其实把GMemoryStream看成Qbuffer一点也没有问题。
class GMemoryStream : public QBuffer
{
#ifndef QT_NO_QOBJECT
Q_OBJECT
#endif
public:
GMemoryStream(OpenMode flags = GStream::ReadWrite);
explicit GMemoryStream(GByteArray *buf, bool ownerBuf, OpenMode flags = GStream::ReadWrite);
virtual ~GMemoryStream();
private:
bool m_ownerBuf;
GByteArray *m_buf;
};
二:函数应用
(1)virtual bool seek(qint64 pos);
看下面的三句代码:
GMemoryStream* pStream = NULL;
pStream = new GMemoryStream();
pStream->seek(0);
pStream->seek(0);的作用在于找到流的开始位置,以便于以后写入。
(2)oStream.open(QIODevice::ReadWrite);
一个流只能打开一次,如果在一个流中被打开多次,则每一次都会回到流的开始位置。
(3)qint64 write(const char *data, qint64 len);
oStream.write((char*)(&nSize), sizeof(int));
可以把这句话理解为把int nSize;变量的值,写入到流oStream中。
写入的大小是4个字节。
写入的位置是上一个写入位置紧跟着的4个字节或流的开始位置。
(4) qint64 read(char *data, qint64 maxlen);
oStream.read((char*)(&nSize), sizeof(int));
可以把这句话理解为把流oStream的值读入到int nSize;中。
读入的大小是4个字节。
读入的位置是上一个读入位置紧跟着的4个字节或流的开始位置。
(5) virtual void close();用完了流就应该关闭
三:总结
(1)数据写入流
pStream = new GMemoryStream();pStream->seek(0);
oStream.write((char*)(&nSize), sizeof(int));
....
pStream->close();
(2)数据从流中加载
GMemoryStream oStream;
oStream.open(QIODevice::ReadWrite);
oStream.read((char*)(&nCount), sizeof(int));
....
oStream.close();
(3)Qbuffer应用不出错的关键是按字节格式写入流后,各个数据一定要按写入格式大小和顺序读入。一定要注意格式,Qbuffer可不能按名称查找数据奥
- QT中流Qbuffer的应用总结
- java中流的应用
- QT中缓冲区- QBuffer
- Delphi中流对象的应用
- Delphi编程中流的应用
- QBuffer的使用
- Domino代理中流的简单应用
- Java中流的问题总结(实例)
- Java中流的学习总结(1)
- Java中流的学习总结(2)
- QIODevice (Qt中所有 I/O devices 的基类,QFile,QBuffer,QTcpSocket等)
- QIODevice (Qt中所有 I/O devices 的基类,QFile,QBuffer,QTcpSocket等)
- QIODevice (Qt中所有 I/O devices 的基类,QFile,QBuffer,QTcpSocket等)
- QT——QByteArray及QBuffer
- QT——QByteArray及QBuffer
- QT——QByteArray及QBuffer
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
- 目标跟踪方法概述
- linux的线程模型:2.6是个分界点
- js写可乐罐与钟表总结
- NDK-JNI实战教程(三) 从比Hello World稍复杂点儿的NDK例子说说模板
- 前端编码规范之Javascript
- QT中流Qbuffer的应用总结
- ubuntu14.04 failed to connect: ‘No VPN secrets!’
- 路由表添加
- ConcurrentLinkedQueue 以及 BlockingQueue
- CentOS 加载/挂载 U盘
- php 静态方法 静态变量和继承
- 什么是"回调函数"
- DirectShow 快速入门之参考时钟
- leetcode || 125、Valid Palindrome