当前位置 博文首页 > 木木木 的博客:Qt开发之路21---二进制文件读写 QDataStream
QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流,这种流完全不依赖于底层操作系统、CPU 或者字节顺序(大端或小端)。例如,在安装了 Windows 平台的 PC 上面写入的一个数据流,可以不经过任何处理,直接拿到运行了 Solaris 的 SPARC 机器上读取。由于数据流就是二进制流,因此我们也可以直接读写没有编码的二进制数据,例如图像、视频、音频等。
QDataStream既能够存取 C++ 基本类型,如 int、char、short 等,也可以存取复杂的数据类型,例如自定义的类。实际上,QDataStream对于类的存储,是将复杂的类分割为很多基本单元实现的。
结合QIODevice,QDataStream可以很方便地对文件、网络套接字等进行读写操作。
#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QDataStream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile file("test.dat");
if(!file.open(QIODevice::WriteOnly)){
qDebug()<<"open file failed";
return -1;
}
QDataStream out(&file);
out << QString("the number is ");
out << qint32(123);
file.close();
return a.exec();
}
将存储到文件中的内容取出来
#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QDataStream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile file("test.dat");
if(!file.open(QIODevice::ReadOnly)){
qDebug()<<"open file failed";
return -1;
}
QDataStream in(&file);
QString str;
qint32 num;
in >> str;
in >> num;
qDebug()<<str<<num;
file.close();
return a.exec();
}
"the number is " 123
上一篇:Qt开发之路20—文件操作(QFile、QFileInfo)
下一篇:Qt开发之路22—文本文件读写 QTextStream