QBuffer为Qtl里面的缓冲区类
缓冲区的本质就是一段连续的存储空间
在Qt中QBuffer可以看为一个特殊的IO设备
文件辅助类(QDataStream ,QTextStream)可以直接作用于缓冲区类
QBuffer和其他Io设备打开方式一样,都是由打开设备,读取设备,写入设备,关闭设备四大步骤组成,代码如下:
#include
#include
#include
#include
#include
void write_buffer(int type, QBuffer& buffer) //写入缓冲区方法
{
if( buffer.open(QIODevice::WriteOnly) ) //以只写方式打开缓冲区
{
QDataStream out(&buffer);
out << type;
if(type == 0) //写入数据
{
out << QString("badogyang software");
out << 3.14159;
}
else if(type == 1)
{
out << 3;
out << 1314;
}
else if(type == 2)
{
out << 531.135;
}
buffer.close(); //关闭缓冲区
}
}
void read_buffer(QBuffer& buffer)
{
if( buffer.open(QIODevice::ReadOnly) )
{
int type = -1;
QDataStream in(&buffer);
in >> type;
if(type == 0)
{
QString s = "";
double value = 0;
in >> s;
in >> value;
qDebug() << s;
qDebug() << value;
}
else if(type == 1)
{
int a;
int b;
in >> a;
in >> b;
qDebug() << a;
qDebug() << b;
}
else if(type == 2)
{
double value = 0;
in >> value;
qDebug() << value;
}
buffer.close();
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QByteArray array;
QBuffer buffer(&array);
write_buffer(0, buffer);
read_buffer(buffer);
return a.exec();
}
QBuffer的使用场合
--线程间不同类型的数据通信
--缓存外部设备的返回数据
--数据读取速度小于数据写入事
//文章参考狄泰软件学院Qt视频教程