说明
QDataStream类用于将任意常见类型的数据以二进制写入由QFile指定的磁盘文件中。同时也可以按写入的顺序读取这些类型的数据。
函数
- QDataStream::QDataStream(QIODevice * d)
- template <typename T>
inline QDataStream & operator<<(QDataStream & s, const QList<T> & l) - template <typename T>
inline QDataStream & operator>>(QDataStream & s, QList<T> & l)
释义
- QDataStream类构造函数,可传入任意QIODevice指针类型参数,如QFile派生自QIODevice,故可传入QFile类型参数。
- 输出内容到文件,是一个全局的运算符重载模板函数。
- 从文件读取内容,是一个全局的运算符重载模板函数。
示例
先定义一个自定义类型:
class Test{
public:
Test(){}
public:
QString str;
int a;
QString str2;
};
写入文件
QFile file("test.abc");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
Test t;
t.str = "aaa";
t.a = 1;
t.str2 = "bbb";
out << t.str << t.a << t.str2;
file.close();
从文件读取
QFile file("test.abc");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
Test t;
in >> t.str >> t.a >> t.str2;
file.close();
cout << qPrintable(t.str) << endl
<< t.a << endl
<< qPrintable(t.str2) << endl;
运行结果:
写入:
读取:
PS:如要实现直接操作自定义类型变量,只需编写输入、输出两个运算符重载函数即可。实现之后主体代码会简洁一些,但本质和例子中一样。