我目前正在制作一个小程序,我将计算文本中提到某个单词的次数。但是,当前一个元素是一个10位数的时候,我只想数字。 所以我正在尝试的是,我将检查迭代器的前一个元素是否包含一个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;
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
您可以通过执行以下操作获取以前的迭代器:
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
类型,因为我不知道你的数字的范围,但它们看起来很大。