1

ICU ブレーク イテレータを使用してクロッパーを作成しました。では、次のコードを使用してすべての境界を反復処理することを提案しています。

void listWordBoundaries(const UnicodeString& s) {
    UErrorCode status = U_ZERO_ERROR;
    BreakIterator* bi = BreakIterator::createWordInstance(Locale::getUS(), status);


    bi->setText(s);
    int32_t p = bi->first();
    while (p != BreakIterator::DONE) {
        printf("Boundary at position %d\n", p);
        p = bi->next();
    }
    delete bi;
}

これは、 がnext()実際に反復子を変更していることを示しているようです。ただし、ドキュメントは、値を返すことだけが効果があることを示しているようです。これは悪いドキュメントの単なる例ですか? 特にが本当に変異している場合、 も変異next()しているかどうかを知りたいです。last()

4

1 に答える 1

0

current()const whilenext()であり、そうではないことに注意してくださいlast()。はい、next()反復子を進めlast()て終了位置に設定します。ドキュメントを修正するためにhttp://bugs.icu-project.org/trac/ticket/9360に提出しました、ありがとう。

于 2012-06-01T15:21:21.253 に答える