void test()
{
QFile f("..\\data\\NAVHistory2.txt");
if (!f.open(QFile::ReadOnly))
{
return;
}
QByteArray data = f.readAll();
int iLeft = data.indexOf('[');
int iRight = data.lastIndexOf(']');
QJsonDocument::fromRawData(data.data() + iLeft, iRight - iLeft + 1);// got error
}
我想剪切一部分
QByteArray
并将其发送到QJsonDocument
。最简单的方法是使用QByteArray::mid
并创建QByteArray
的新副本。 QJsonDocument::fromJson(QByteArray)
效果很好。但是,它只需要删除一小部分数据。因此,创建新的
QBytedata
会降低性能。有一种更好的方法QJsonDocument::fromRawData(char*)
。但是我得到一个错误:QJsonDocument::fromRawData: data has to have 4 byte alignment
我在Qt文档中查找了this。它说
data has to be aligned to a 4 byte boundary.
Qt source我的应用程序是x64项目,因此
char*
是8字节边界。我该如何度过? 最佳答案
我看到两个选择:
data
的其他功能,只需使用data.remove(0, iLeft)
使JSON代码段从QByteArray
的开头开始(该位置至少对齐4个字节)。 关于c++ - QJsonDocument::fromRawData(const char * data,int size)数据必须与4字节边界对齐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59281917/