qt 数组存入.dat文件
时间: 2025-06-29 07:21:36 浏览: 9
### 使用 Qt 将数组保存到 .dat 文件
为了实现将数组保存至 `.dat` 文件的功能,可以采用 `QFile` 和 `QDataStream` 类来处理文件的读写操作。下面展示了一个具体的例子,其中定义了一个简单的结构体用于模拟数组,并展示了如何将其序列化并存储到 `.dat` 文件中以及从该文件反序列化恢复数据。
#### 定义要保存的数据结构
假设有一个自定义类型的对象作为待保存的数组元素:
```cpp
struct Data {
int a;
double b;
QString c;
friend QDataStream& operator<<(QDataStream &out, const Data &data);
friend QDataStream& operator>>(QDataStream &in, Data &data);
};
// 实现流插入运算符重载以便于写出数据
QDataStream& operator<<(QDataStream &out, const Data &data){
out << data.a << data.b << data.c;
return out;
}
// 实现流提取运算符重载以便于读入数据
QDataStream& operator>>(QDataStream &in, Data &data){
in >> data.a >> data.b >> data.c;
return in;
}
```
#### 数据写入过程
创建一个包含多个上述结构实例的对象列表,并通过循环依次向`.dat`文件内追加这些记录:
```cpp
#include <QVector>
#include <QFile>
#include <QDataStream>
int main(){
QVector<Data> dataList; // 假设这里已经填充了一些Data类型的元素
QFile file("example.dat");
if (!file.open(QIODevice::WriteOnly)){
qDebug() << "Cannot open file for writing.";
return -1;
}
QDataStream out(&file);
foreach (const auto& item, dataList){
out << item;
}
file.close();
return 0;
}
```
#### 数据读取过程
打开之前创建好的`.dat`文件并将里面的内容逐条解析回原始类型:
```cpp
#include <QDebug>
int main(){
QVector<Data> restoredList;
QFile file("example.dat");
if(!file.exists()){
qDebug()<<"File does not exist!";
return -1;
}else{
if(!file.open(QIODevice::ReadOnly)){
qDebug()<<"Failed to read the file";
return -1;
}
QDataStream in(&file);
while (!in.atEnd()) {
Data tempItem;
in>>tempItem;
restoredList.append(tempItem);
}
file.close();
// 打印验证读取出的数据
for(auto it=restoredList.begin();it!=restoredList.end();++it){
qDebug()<<(*it).a<<(*it).b<<(*it).c;
}
}
return 0;
}
```
以上代码片段说明了怎样利用Qt框架下的类库完成基本的数据持久化任务[^1]。对于更复杂的应用场景,则可能还需要考虑异常处理机制、并发访问控制等问题。
阅读全文
相关推荐















