我目前正在研究一個小程序,其中我將計算文本中提及某個單詞的次數。但是我只想在上一個元素是一個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