私は現在、ある単語がテキストに記述されている時間をカウントする小さなプログラムに取り組んでいます。しかし、私は前の要素が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文たい:すべてのヘルプ
if(!QString::compare(*it,box) && *prev_it == 10 digits) ++boxCount;
が理解されるであろう。ありがとう!
インデックスを使用する方が簡単かもしれません。リストの最初の文字列には前の文字列がないので、2番目の項目からループを開始したいことに注意してください。 – hyde
Btw私が正しい方法で物事を見れば、リスト内の要素を変更していないので、indexを使って言及した@hyevは簡単な方法であり、 'at(...) 'を使うことに加えて、 'at(...)'は読み込み専用の 'const'を返します(基本的にはここでやっていることです)。イテレータは読み書きの両方を可能にします。アクセスを書き込むために 'readonly'となるだけのものを公開する必要はありません。 – rbaleksandar
ループを反復処理することの利点は、手作業でそれを操作すると境界チェックの点で消えます。私はこれを言及しています。なぜなら 'at(...)'(これは私が最近発見した)は範囲外をチェックしないからです。 – rbaleksandar