【发布时间】:2017-05-27 20:35:40
【问题描述】:
我正在使用一些函数将QVector's转换为QByteArray's,例如:
QByteArray Serialize::serialize(QVector<double> data)
{
QByteArray byteArray;
QDataStream out(&byteArray, QIODevice::WriteOnly);
out << data;
return byteArray;
}
void Serialize::deserialize(QByteArray byteArray, QVector<double> *data)
{
QDataStream in(&byteArray, QIODevice::ReadOnly);
in >> *data;
}
现在,我有QByteArray,我需要将它放在一个文本文件中,如何将其转换为QString?
我已经尝试过最简单的方法:
QString myString(data); // data - QByteArray
但myString 始终为空。
我还在文档中找到了toStdString() 函数,但它仅在Qt 5.4中引入。
我正在使用 Qt 5.3。
下面是一个完整的例子:
#include <QCoreApplication>
#include <QDebug>
#include <QVector>
#include <QByteArray>
#include <QDataStream>
QByteArray serialize(QVector<double> data)
{
QByteArray byteArray;
QDataStream out(&byteArray, QIODevice::WriteOnly);
out << data;
return byteArray;
}
void deserialize(QByteArray byteArray, QVector<double> *data)
{
QDataStream in(&byteArray, QIODevice::ReadOnly);
in >> *data;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<double> data;
data << 1.1 << 2.2 << 3.3 << 4.4 << 5.5 << 6.6 << 7.7 << 8.8 << 9.9;
QByteArray byteArray = serialize(data);
QVector<double> dataConverted;
deserialize(byteArray, &dataConverted);
qDebug() << "Data:";
qDebug() << data;
qDebug() << "ByteArray:";
QString test(byteArray);
qDebug() << test;
qDebug() << "Data Converted:";
qDebug() << dataConverted;
return a.exec();
}
注意:这样做的总体目标是生成一个包含 SQLite 数据库中所有内容的 SQL 文件。我的双向量被转换为QByteArray 并作为 BLOB 存储到数据库中(使用序列化函数)。当我需要从数据库中加载它时,我使用反序列化函数再次转换为双向量。现在我需要用BLOB格式的数据生成SQL文件,然后我可以直接将它导入到另一个数据库中。
【问题讨论】:
标签: c++ qt qstring qbytearray