如何将结构体数据利用QDataStream 里的out 写入txt
时间: 2023-04-01 12:03:02 浏览: 71
文件?
可以使用QDataStream的writeRawData()函数将结构体数据写入txt文件。具体步骤如下:
1. 打开txt文件,使用QFile类的open()函数打开文件。
2. 创建QDataStream对象,使用QDataStream类的构造函数创建对象,并将文件指针传递给它。
3. 使用writeRawData()函数将结构体数据写入txt文件。
4. 关闭txt文件,使用QFile类的close()函数关闭文件。
示例代码如下:
```
#include <QFile>
#include <QDataStream>
struct MyStruct {
int id;
QString name;
double score;
};
int main() {
MyStruct data = {1, "Tom", 90.5};
QFile file("data.txt");
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Open file failed";
return -1;
}
QDataStream out(&file);
out.writeRawData((char*)&data, sizeof(MyStruct));
file.close();
return ;
}
```
相关问题
qt中将结构体成员变量依次写入text文件
你可以使用Qt中的QDataStream类来将结构体的成员变量依次写入到文本文件中。具体步骤如下:
1. 打开要写入的文本文件,创建QFile对象并使用QIODevice::WriteOnly模式打开文件。
```
QFile file("your_file_path");
if(!file.open(QIODevice::WriteOnly))
{
qDebug() << "Error opening file!";
return;
}
```
2. 创建QDataStream对象并将其绑定到QFile对象上,以便将数据写入文件。
```
QDataStream out(&file);
```
3. 将结构体的成员变量依次写入到文本文件中。例如,如果结构体的名称为MyStruct,其成员变量为x、y和z,则可以按照以下方式将其写入文件中:
```
MyStruct myStruct;
myStruct.x = 1;
myStruct.y = 2;
myStruct.z = 3;
out << myStruct.x << myStruct.y << myStruct.z;
```
4. 关闭文件。
```
file.close();
```
这样,结构体的成员变量就依次写入到了文本文件中。如果需要读取这些数据,可以使用类似的方法,将QDataStream对象绑定到文本文件上,并按照相同的顺序读取数据。
Qt QDATAsTREAM 序列化一个 包含XYZA 坐标的结构体
可以通过重载 QDataStream 的 << 和 >> 运算符实现将包含XYZA坐标的结构体进行序列化和反序列化,具体的实现代码如下:
```
struct Point4D
{
double x;
double y;
double z;
double a;
};
QDataStream &operator<<(QDataStream &out, const Point4D &point)
{
out << point.x << point.y << point.z << point.a;
return out;
}
QDataStream &operator>>(QDataStream &in, Point4D &point)
{
in >> point.x >> point.y >> point.z >> point.a;
return in;
}
```
然后在需要将结构体进行序列化的地方,使用 QDataStream 对象来写入数据:
```
Point4D point;
QDataStream out(&data, QIODevice::WriteOnly);
out << point;
```
读取时,则使用 QDataStream 对象来读取数据:
```
Point4D point;
QDataStream in(&data, QIODevice::ReadOnly);
in >> point;
```