在Qt中,可以使用QDataStream类来保存和读取两个不同的结构体数据。下面是一个示例代码,展示了如何将两个不同的结构体保存到文件并分别从文件中提取出这两个结构体。
#include <QCoreApplication>
#include <QFile>
#include <QDataStream>
// 第一个结构体
struct Struct1 {
int data1;
float data2;
};
// 第二个结构体
struct Struct2 {
QString name;
int age;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建文件对象并打开文件
QFile file("data.bin");
if (!file.open(QIODevice::ReadWrite)) {
qDebug() << "无法打开文件";
return -1;
}
// 创建数据流对象,并绑定到文件上
QDataStream stream(&file);
// 创建两个结构体实例
Struct1 s1 = {42, 3.14};
Struct2 s2 = {"John Doe", 30};
// 写入第一个结构体到数据流
stream.writeRawData(reinterpret_cast<const char*>(&s1), sizeof(s1));
// 写入第二个结构体到数据流
stream.writeRawData(reinterpret_cast<const char*>(&s2), sizeof(s2));
// 回到文件起始位置,准备读取数据
file.seek(0);
// 读取第一个结构体的值
Struct1 readS1;
stream.readRawData(reinterpret_cast<char*>(&readS1), sizeof(readS1));
// 读取第二个结构体的值
Struct2 readS2;
stream.readRawData(reinterpret_cast<char*>(&readS2), sizeof(readS2));
// 输出读取到的值
qDebug() << "Struct1: " << readS1.data1 << readS1.data2;
qDebug() << "Struct2: " << readS2.name << readS2.age;
// 关闭文件
file.close();
return a.exec();
}
以上代码将会创建一个名为”data.bin”的二进制文件,并将两个不同的结构体按顺序保存到该文件中。然后,我们重新打开这个文件并从中读取数据,分别存储到新的结构体实例中,并输出读取到的值。你可以根据自己的需要修改结构体定义和操作来适应特定的场景。
内容由零声教学AI助手提供,问题来源于学员提问