bool processData(const QByteArray & data)
{
QStringRef qf(data);
QList<QStringRef> splitted = qf.slit(",")
}
考虑一下QByteArray中有大量数据。我想进行搜索,分析并将其一小部分复制到QString。不复制该怎么办?
答案 0 :(得分:1)
根据Qt document:
QByteArray可用于存储原始字节(包括“ \ 0”)和 传统的8位以'\ 0'结尾的字符串。使用QByteArray是很多 比使用const char *更方便。在幕后,它总是 确保数据后跟一个'\ 0'终止符,并使用 隐式共享(写时复制)以减少内存使用并避免 无需复制数据。
因此,如果您确实不修改数据,则不必担心复制费用。
bool processFundRankData(const QByteArray & data)
{
int firstIndexOfCR = data.indexOf(`\r`);
QByteArray firstFour = data.left(4);
}
实际上,QByteArray与QString一样,具有最多的“字符串”操作。因此,无需将其分配给QString或QStringRef。