我已经使用 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()
也在发生变异。