Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

QBuffer可以在内存中开辟一块空间用来存储临时数据,QBuffer继承自QIODevice。
这个比较好理解,直接看代码吧(记得包含QBuffer头文件):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 创建QBuffer对象
QBuffer membuf;
// 设置打开模式为只写
if(membuf.open(QIODevice::WriteOnly))
{
// 写入文本
membuf.write("Hello");
membuf.write(" This is QBuffer");
// 关闭只写打开模式
membuf.close();
// 以只读方式打开membuf
membuf.open(QIODevice::ReadOnly);
// 读取内容并输出。reaAll()返回一个QByteArry
cout << membuf.readAll().toStdString() << endl;
membuf.close();
}

输出内容如下:

1
2
3
11:35:49: Starting /home/fire/codeSet/QtSet/build-untitled9-unknown-Debug/untitled9 ...
Hello This is QBuffer
11:35:52: /home/fire/codeSet/QtSet/build-untitled9-unknown-Debug/untitled9 exited with code 0

你也可以这么做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 所有的操作都是对QByteArray类型的arr变量的操作
QByteArray arr;
QBuffer membuf(&arr);
QDataStream stream;
if(membuf.open(QIODevice::WriteOnly))
{
QString msg("Now!Buf!");
stream.setDevice(&membuf);
// 写入QString类型的数据和int类型的数据
stream << msg << 777;
membuf.close();

QString resq;
int resi;
membuf.open(QIODevice::ReadOnly);
// 依次读取QString类型和int类型的数据
stream >> resq >> resi;
std::cout << resq.toUtf8().data() << resi << endl;
}

输出如下:

1
2
3
11:41:50: Starting /home/fire/codeSet/QtSet/build-untitled9-unknown-Debug/untitled9 ...
Now!Buf!777
11:41:54: /home/fire/codeSet/QtSet/build-untitled9-unknown-Debug/untitled9 exited with code 0

这篇文章就介绍到这里,本篇完。

评论



愿火焰指引你