gpt4 book ai didi

c++ - QJsonDocument::fromRawData(const char *data, int size) 数据必须对齐到 4 字节边界

转载 作者:行者123 更新时间:2023-11-28 01:14:02 35 4
gpt4 key购买 nike

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:数据必须有 4 字节对齐

我在 Qt 文档中查找了 this .它表示 数据必须与 4 字节边界对齐。 Qt source

我的应用程序是一个 x64 项目,所以 char* 是一个 8 字节的边界。我该如何度过难关?

最佳答案

我看到两个选项:

  • 只拿拷贝。快速简单。
  • 如果您不需要 data 中的任何其他内容,只需使用 data.remove(0, iLeft) 让您的 JSON 片段从 的开头开始code>QByteArray(至少对齐到 4 个字节)。

关于c++ - QJsonDocument::fromRawData(const char *data, int size) 数据必须对齐到 4 字节边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59281917/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com