Получить предыдущий элемент QStringList
В настоящее время я работаю над небольшой программой, в которой я буду подсчитывать, сколько раз определенное слово упоминается в тексте. Но я хочу рассчитывать на слово только тогда, когда предыдущий элемент является 10-значным числом. Поэтому я пытаюсь проверить, состоит ли предыдущий элемент итератора из десятизначного числа. Но я не знаю, как перейти к предыдущему элементу из итератора.
QString input = ui->listinput->toPlainText();
QStringList inputlist = input.split(QRegExp("[\s\n\r " "]+"));
unsigned int boxCount(0);
for(QStringList::iterator it(inputlist.begin()); it != inputlist.end(); ++it){
if(!QString::compare(*it,box)) ++boxCount;
}
Поэтому я хочу, чтобы выражение if было примерно таким:
if(!QString::compare(*it,box) && *prev_it == 10 digits) ++boxCount;
Любая помощь будет оценена. Спасибо!
1 ответ
Вы можете получить предыдущий итератор, выполнив:
if (it != inputlist.begin()) {
prev_it = it - 1
}
Вам придется сделать исключение для первого элемента, так как у него нет предыдущего элемента. Либо проверьте диапазон (как выше), либо начните for
зациклите один элемент после первого (обратите внимание на "+ 1"):
for (QStringList::iterator it(inputlist.begin() + 1); it != inputlist.end(); ++it) {
...
}
В последнем случае вы должны быть уверены, что ваш список содержит хотя бы один элемент.
Если затем вы хотите проверить, является ли число 10-значным (предполагая десятичное и целое число), вы можете попробовать следующее:
bool ok = false;
long num = prev_it->toLong(&ok);
if (ok && num >= 1000000000) {
// do something
}
Примечание: я использовал long
типа, потому что я не знаю диапазон ваших чисел, но они казались большими.