QString::mid() 总是 returns 相同的结果
QString::mid() always returns the same result
此函数应将 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 > 1,则 currentFragment 在每次迭代中始终相同。怎么了?
P.S。单元格字符串可能很大(最多 100K 个符号)
好像是编译器的问题(MS VS2008-恐龙版)。
经过几次重建后,它工作正常。
此函数应将 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 > 1,则 currentFragment 在每次迭代中始终相同。怎么了? P.S。单元格字符串可能很大(最多 100K 个符号)
好像是编译器的问题(MS VS2008-恐龙版)。 经过几次重建后,它工作正常。