【问题标题】:How can I partition a QByteArray efficiently?如何有效地对 QByteArray 进行分区?
【发布时间】:2011-08-24 02:27:20
【问题描述】:

我想有效地对 QByteArray 消息进行分区,所以我实现的这个函数采用字节、我要提取的部分和 toEnd 标志,它告诉我是否要提取 part1 直到数组的末尾。我的测距仪是 spcae ' '

如果我有示例:

ba = "HELLO HOW ARE YOU?"
ba1 = getPart(ba, 1, false) -> ba1 = "HELLO"
ba2 = getPart(ba, 2, true) -> ba2 = "HOW ARE YOU?"
ba3 = getPart(ba, 3, false) -> ba3 = "ARE"

下面的函数工作得很好,但我想知道这是否有效。我应该考虑使用拆分功能吗?

QByteArray Server::getPart(const QByteArray message, int part, bool toEnd)
{
    QByteArray string;
    int startsFrom = 0;
    int endsAt = 0;
    int count = 0;
    for(int i = 0; i < message.size(); i++)
    {
        if(message.at(i) == ' ')
        {
            count++;
            if(part == count)
            {
                endsAt = i;
                break;
            }
            string.clear();
            startsFrom = i + 1;
        }
        string.append(message.at(i));
    }
    if(toEnd)
    {
        for(int i = endsAt; i < message.size(); i++)
        {
            string.append(message.at(i));
        }
    }
    return string;
}

【问题讨论】:

标签: qt string substring qstring qbytearray


【解决方案1】:

这个呢:

  QByteArray Server::getPart(const QByteArray& message, int part, bool toEnd)
  {
    int characters(toEnd ? -1 : message.indexOf(' ', part) - part);

    return message.mid(part, characters);
  }

【讨论】:

  • 感谢 JadziaMD,我不得不稍作改动才能让它以我想要的方式工作。
【解决方案2】:

为什么不把它变成一个普通的 QString 并使用split。这会给你一个QStringList。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2012-04-22
    • 2015-07-08
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2014-01-08
    相关资源
    最近更新 更多