2012-05-31 34 views
1

我已經使用了ICU中斷迭代器的裁剪器。在​​,他們建議使用下面的代碼通過所有邊界迭代:ICU的BreakIterator文檔不正確?

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()也是變異。

回答

0

請注意current()是const,而next()last()不是。是的,next()提前迭代器,並且last()將它設置爲結束位置。我已經提交http://bugs.icu-project.org/trac/ticket/9360修復文檔,謝謝。

+0

..哪張票已經修好。 –