X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..374ca955a76ecab1204ca8bfa63ff9238d998416:/icuSources/samples/break/break.cpp?ds=sidebyside diff --git a/icuSources/samples/break/break.cpp b/icuSources/samples/break/break.cpp index d3a6ee27..90d77efa 100644 --- a/icuSources/samples/break/break.cpp +++ b/icuSources/samples/break/break.cpp @@ -7,7 +7,7 @@ ******************************************************************************* */ -#include +#include #include #include @@ -15,126 +15,129 @@ U_CFUNC int c_main(void); void printUnicodeString(const UnicodeString &s) { - char charBuf[1000]; - s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0); - charBuf[sizeof(charBuf)-1] = 0; - cout << charBuf; + char charBuf[1000]; + s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0); + charBuf[sizeof(charBuf)-1] = 0; + printf("%s", charBuf); } - void printTextRange( BreakIterator& iterator, - int32_t start, int32_t end ) + int32_t start, int32_t end ) { - CharacterIterator *strIter = iterator.getText().clone(); - UnicodeString s; - strIter->getText(s); - - cout << " " << start << " " << end << " |" ; - printUnicodeString(s); - cout << "|" << '\n'; - delete strIter; + CharacterIterator *strIter = iterator.getText().clone(); + UnicodeString s; + strIter->getText(s); + + printf(" %ld %ld\t", (long)start, (long)end); + printUnicodeString(UnicodeString(s, 0, start)); + printf("|"); + printUnicodeString(UnicodeString(s, start, end-start)); + printf("|"); + printUnicodeString(UnicodeString(s, end)); + puts(""); + delete strIter; } /* Print each element in order: */ void printEachForward( BreakIterator& boundary) { - int32_t start = boundary.first(); - for (int32_t end = boundary.next(); - end != BreakIterator::DONE; - start = end, end = boundary.next()) + int32_t start = boundary.first(); + for (int32_t end = boundary.next(); + end != BreakIterator::DONE; + start = end, end = boundary.next()) { - printTextRange( boundary, start, end ); + printTextRange( boundary, start, end ); } } /* Print each element in reverse order: */ void printEachBackward( BreakIterator& boundary) { - int32_t end = boundary.last(); - for (int32_t start = boundary.previous(); - start != BreakIterator::DONE; - end = start, start = boundary.previous()) + int32_t end = boundary.last(); + for (int32_t start = boundary.previous(); + start != BreakIterator::DONE; + end = start, start = boundary.previous()) { - printTextRange( boundary, start, end ); + printTextRange( boundary, start, end ); } } /* Print the first element */ void printFirst(BreakIterator& boundary) { - int32_t start = boundary.first(); - int32_t end = boundary.next(); - printTextRange( boundary, start, end ); + int32_t start = boundary.first(); + int32_t end = boundary.next(); + printTextRange( boundary, start, end ); } /* Print the last element */ void printLast(BreakIterator& boundary) { - int32_t end = boundary.last(); - int32_t start = boundary.previous(); - printTextRange( boundary, start, end ); + int32_t end = boundary.last(); + int32_t start = boundary.previous(); + printTextRange( boundary, start, end ); } /* Print the element at a specified position */ void printAt(BreakIterator &boundary, int32_t pos ) { - int32_t end = boundary.following(pos); - int32_t start = boundary.previous(); - printTextRange( boundary, start, end ); + int32_t end = boundary.following(pos); + int32_t start = boundary.previous(); + printTextRange( boundary, start, end ); } /* Creating and using text boundaries */ int main( void ) { - cout << "ICU Break Iterator Sample Program\n\n"; - cout << "C++ Break Iteration\n\n"; - BreakIterator* boundary; - UnicodeString stringToExamine("Aaa bbb ccc. Ddd eee fff."); - cout << "Examining: "; - printUnicodeString(stringToExamine); - cout << endl; - - //print each sentence in forward and reverse order - UErrorCode status = U_ZERO_ERROR; - boundary = BreakIterator::createSentenceInstance( - Locale::getUS(), status ); - if (U_FAILURE(status)) { - cout << - "failed to create sentence break iterator. status = " - << u_errorName(status); - exit(1); - } - - boundary->setText(stringToExamine); - cout << "\n Sentence Boundaries... \n"; - cout << "----- forward: -----------" << '\n'; - printEachForward(*boundary); - cout << "----- backward: ----------" << '\n'; - printEachBackward(*boundary); - delete boundary; - - //print each word in order - cout << "\n Word Boundaries... \n"; - boundary = BreakIterator::createWordInstance( - Locale::getUS(), status); - boundary->setText(stringToExamine); - cout << "----- forward: -----------" << '\n'; - printEachForward(*boundary); - //print first element - cout << "----- first: -------------" << '\n'; - printFirst(*boundary); - //print last element - cout << "----- last: --------------" << '\n'; - printLast(*boundary); - //print word at charpos 10 - cout << "----- at pos 10: ---------" << '\n'; - printAt(*boundary, 10 ); - - delete boundary; - cout.flush(); - - // Call the C version - return c_main(); + puts("ICU Break Iterator Sample Program\n"); + puts("C++ Break Iteration\n"); + BreakIterator* boundary; + UnicodeString stringToExamine("Aaa bbb ccc. Ddd eee fff."); + printf("Examining: "); + printUnicodeString(stringToExamine); + puts(""); + + //print each sentence in forward and reverse order + UErrorCode status = U_ZERO_ERROR; + boundary = BreakIterator::createSentenceInstance( + Locale::getUS(), status ); + if (U_FAILURE(status)) { + printf("failed to create sentence break iterator. status = %s", + u_errorName(status)); + exit(1); + } + + boundary->setText(stringToExamine); + puts("\n Sentence Boundaries... "); + puts("----- forward: -----------"); + printEachForward(*boundary); + puts("----- backward: ----------"); + printEachBackward(*boundary); + delete boundary; + + //print each word in order + printf("\n Word Boundaries... \n"); + boundary = BreakIterator::createWordInstance( + Locale::getUS(), status); + boundary->setText(stringToExamine); + puts("----- forward: -----------"); + printEachForward(*boundary); + //print first element + puts("----- first: -------------"); + printFirst(*boundary); + //print last element + puts("----- last: --------------"); + printLast(*boundary); + //print word at charpos 10 + puts("----- at pos 10: ---------"); + printAt(*boundary, 10 ); + + delete boundary; + + puts("\nEnd C++ Break Iteration"); + + // Call the C version + return c_main(); }