2016-03-22 3 views
3

Эта функция должна разбить 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> 1, то currentFragment всегда одинакова в каждой итерации. Что не так? P.S. Строка ячейки может быть большой (до 100K символов)

+0

Можете ли вы предоставить минимальный автономный пример, воспроизводящий проблему? –

+0

отлично подходит для меня. Тем не менее, ваш 'fragmentSize' всегда' c_maxCellSize', если более одного фрагмента, не так ли? –

+0

@SebastianLange Нет, если cell.size() LibertyPaul

ответ

0

Это, кажется, проблема с компилятором (выпуск MS VS2008-динозавров). После нескольких перестроек он отлично работает.

Смежные вопросы