class User { public: User(); int id; QString username; QString email; QString phone; QString imagePath; };将这个类序列化
时间: 2024-03-09 20:48:45 浏览: 48
可以使用QDataStream类来序列化这个类。需要注意的是,QString类需要使用QString::toUtf8()将其转换为字节数组。
以下是将User类序列化并写入文件的示例代码:
```cpp
QFile file("user.dat");
if (file.open(QIODevice::WriteOnly)) {
QDataStream out(&file);
User user;
user.id = 1;
user.username = "John";
user.email = "john@example.com";
user.phone = "123456789";
user.imagePath = "/path/to/image.jpg";
out << user.id << user.username.toUtf8() << user.email.toUtf8() << user.phone.toUtf8() << user.imagePath.toUtf8();
file.close();
}
```
以下是从文件中读取User类并反序列化的示例代码:
```cpp
QFile file("user.dat");
if (file.open(QIODevice::ReadOnly)) {
QDataStream in(&file);
User user;
QByteArray username, email, phone, imagePath;
in >> user.id >> username >> email >> phone >> imagePath;
user.username = QString::fromUtf8(username);
user.email = QString::fromUtf8(email);
user.phone = QString::fromUtf8(phone);
user.imagePath = QString::fromUtf8(imagePath);
file.close();
}
```
这个示例从名为"user.dat"的文件中读取User对象,并将其反序列化为一个新对象。注意,从QDataStream读取QString属性需要将其转换为QString对象,使用QString::fromUtf8()函数。
阅读全文