ICU的BreakIterator文档不正确?

时间:2012-05-31 17:27:59

标签: c++ icu

我使用ICU break迭代器来使用cropper。在the example中,他们建议使用以下代码迭代所有边界:

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()实际上改变了迭代器。但是,documentation似乎表明它的唯一作用是返回一个值。这只是坏文档的一个例子吗?特别是,如果next()确实在变异,我想知道last()是否也在变异。

1 个答案:

答案 0 :(得分:0)

请注意,current()是常量,而next()last()则不是。是的,next()推进迭代器,last()将其设置到结束位置。我已经提交了http://bugs.icu-project.org/trac/ticket/9360来修复文档,谢谢。