我目前正在研究一个小程序,其中我将计算文本中提及某个单词的次数。但是我只想在上一个元素是一个10位数的时候计算这个单词。 所以我想要做的是我会检查迭代器的前一个元素是否包含一个10位数字。但我不知道如何迭代迭代器中的前一个元素。获取QStringList的前一个元素
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(!QString::compare(*it,box) && *prev_it == 10 digits) ++boxCount;
任何帮助将不胜感激。谢谢!
使用索引可能会更简单。请注意,列表中的第一个字符串没有以前的字符串,所以您希望从第二个项目开始循环。 – hyde
顺便说一句,如果我看到事情正确的方式,你不改变列表中的元素,所以@hyde提到使用索引是一种简单的方法,除了使用'at(...)'将是正确的路要走因为'at(...)'返回一个只能被读取的'const'(基本上这就是你在这里做的)。迭代器允许读写。无需暴露足够的“只读”来写入访问权限。 – rbaleksandar
如果您手动修补它,通过循环迭代的优点在边界检查方面会消失。我提到这一点是因为'at(...)'(我最近才发现)不检查是否出界。 – rbaleksandar