获取 QStringList 的前一个元素
Get the previous element of a QStringList
我目前正在开发一个小程序,我将计算某个单词在文本中被提及的次数。但我只想在前一个元素是 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;
如有任何帮助,我们将不胜感激。谢谢!
您可以通过以下方式获取前一个迭代器:
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
类型,因为我不知道你的数字范围,但它们看起来很大。
我目前正在开发一个小程序,我将计算某个单词在文本中被提及的次数。但我只想在前一个元素是 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;
如有任何帮助,我们将不胜感激。谢谢!
您可以通过以下方式获取前一个迭代器:
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
类型,因为我不知道你的数字范围,但它们看起来很大。