Qt中缓冲区的概念
1、缓冲区的本质是一段连续的存储空间
2、QBuffer是Qt中缓冲区相关的类
3、在Qt中可以将缓冲区看作一种特殊的I/O设备
4、文件流辅助类可以直接用于缓冲区操作
QBuffer类:
1、QBuffer类为QByteArray提供了一个QIODevice接口,它允许使用QIODevice接口来访问QByteArray
2、QByteArray被QBuffer视为一个标准的可随机访问的文件
3、默认的,当创建一个QBuffer时会自动在内部自动创建一个QByteArray缓冲区,也可以通过成员函数
void |
setBuffer ( QByteArray * byteArray ) |
或构造QBuffer时传递指向现有的QByteArray的指针来使用现有的QByteArray
4、通过成员函数
QByteArray & |
buffer () |
可直接访问QByteArray缓冲区
QBuffer缓冲区使用场合
1、在线程间进行多个 不同类型的数据传递
2、缓存外部设备中的数据返回
3、数据读取速度小于数据写入速度
#include <QtCore/QCoreApplication>
#include <QBuffer>
#include <QByteArray>
#include <QDataStream>
#include <QDebug>
void write_buffer(int type, QBuffer&buffer) //注意参数类型为引用
{
if( buffer.open(QIODevice::WriteOnly) ) //只能以二进制的方式打开缓冲区
{
QDataStream out(&buffer); //使用文本流辅助类
out << type;
if( type == 0 )
{
out << QString("evening");
out << QString("3.1415");
}
else if( type == 1 )
{
out << 3;
out << 1415;
}
else if( type == 2 )
{
out << 3.1415;
}
buffer.close(); //记得关闭
}
}
void read_buffer(QBuffer& buffer)
{
if( buffer.open(QIODevice::ReadOnly) )
{
int type = -1;
QDataStream in(&buffer);
in >> type;
if( type == 0 )
{
QString dt = "";
QString pi = "";
in >> dt;