QString :: mid()始终返回相同的结果

时间:2016-03-22 14:34:00

标签: c++ qt qstring

此函数应将QString分割为(几乎)相等的片段:

QStringList splitCell(const QString& cell) const
{
    QStringList result;

    const int currentSize = cell.size();
    const int fragmentCount = currentSize / c_maxCellSize + (currentSize % c_maxCellSize ? 1 : 0); // c_maxCellSize = 32758
    const int fragmentSize = currentSize / fragmentCount + (currentSize % fragmentCount ? 1 : 0);

    for (int fragment = 0; fragment < fragmentCount; ++fragment)
    {
        QString currentFragment = cell.mid(fragmentSize * fragment, fragmentSize);
        result << currentFragment;
    }

    return result;
}

但是如果fragmentCount&gt; 1然后currentFragment在每次迭代中始终相同。怎么了? 附:单元串可能很大(最多100K符号)

1 个答案:

答案 0 :(得分:0)

这似乎是编译器问题(MS VS2008-恐龙版)。 经过几次重建后,它可以正常工作。