C++ 如何操作QByteArray对象而不复制它? boolprocessdata(常量QByteArray&data) { qstringrefqf(数据); QList splitted=qf.slit(“,”) }

C++ 如何操作QByteArray对象而不复制它? boolprocessdata(常量QByteArray&data) { qstringrefqf(数据); QList splitted=qf.slit(“,”) },c++,qt,C++,Qt,想想QByteArray中有一大块数据。我想做搜索,分析它,并将它的一小部分复制到QString。我如何在不复制的情况下执行此操作?根据: QByteArray可用于存储原始字节(包括“\0”)和 传统的以8位“\0”结尾的字符串。使用QByteArray非常有用 比使用const char*更方便。在幕后,它总是 确保数据后面跟有“\0”终止符,并使用 隐式共享(写时复制),以减少内存使用并避免 不必要的数据复制 因此,如果您真的不修改数据,就不必担心复制费用 bool processData

想想QByteArray中有一大块数据。我想做搜索,分析它,并将它的一小部分复制到QString。我如何在不复制的情况下执行此操作?

根据:

QByteArray可用于存储原始字节(包括“\0”)和 传统的以8位“\0”结尾的字符串。使用QByteArray非常有用 比使用const char*更方便。在幕后,它总是 确保数据后面跟有“\0”终止符,并使用 隐式共享(写时复制),以减少内存使用并避免 不必要的数据复制

因此,如果您真的不修改数据,就不必担心复制费用

bool processData(const QByteArray & data)
{
    QStringRef qf(data);
    QList<QStringRef> splitted = qf.slit(",")
}
实际上,有最多的“字符串”操作就像。因此,无需将其分配给or

bool processFundRankData(const QByteArray & data)
{
    int firstIndexOfCR = data.indexOf(`\r`);
    QByteArray firstFour = data.left(4);
}