# UCharCharacterIterator Class Reference

A concrete subclass of CharacterIterator that iterates over the characters (code units or code points) in a UChar array. More...

`#include <uchriter.h>`

Inheritance diagram for UCharCharacterIterator:

## Public Member Functions
| UCharCharacterIterator (const UChar *textPtr, int32_t length)
| Create an iterator over the UChar array referred to by "textPtr".
| UCharCharacterIterator (const UChar *textPtr, int32_t length, int32_t position)
| Create an iterator over the UChar array referred to by "textPtr".
| UCharCharacterIterator (const UChar *textPtr, int32_t length, int32_t textBegin, int32_t textEnd, int32_t position)
| Create an iterator over the UChar array referred to by "textPtr".
| UCharCharacterIterator (const UCharCharacterIterator &that)
| Copy constructor.
virtual | ~UCharCharacterIterator ()
| Destructor.
UCharCharacterIterator & | operator= (const UCharCharacterIterator &that)
| Assignment operator.
virtual UBool | operator== (const ForwardCharacterIterator &that) const
| Returns true if the iterators iterate over the same range of the same string and are pointing at the same character.
virtual int32_t | hashCode (void) const
| Generates a hash code for this iterator.
virtual CharacterIterator * | clone (void) const
| Returns a new UCharCharacterIterator referring to the same character in the same range of the same string as this one.
virtual UChar | first (void)
| Sets the iterator to refer to the first code unit in its iteration range, and returns that code unit.
virtual UChar | firstPostInc (void)
| Sets the iterator to refer to the first code unit in its iteration range, returns that code unit, and moves the position to the second code unit.
virtual UChar32 | first32 (void)
| Sets the iterator to refer to the first code point in its iteration range, and returns that code unit, This can be used to begin an iteration with next32().
virtual UChar32 | first32PostInc (void)
| Sets the iterator to refer to the first code point in its iteration range, returns that code point, and moves the position to the second code point.
virtual UChar | last (void)
| Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit.
virtual UChar32 | last32 (void)
| Sets the iterator to refer to the last code point in its iteration range, and returns that code unit.
virtual UChar | setIndex (int32_t position)
| Sets the iterator to refer to the "position"-th code unit in the text-storage object the iterator refers to, and returns that code unit.
virtual UChar32 | setIndex32 (int32_t position)
| Sets the iterator to refer to the beginning of the code point that contains the "position"-th code unit in the text-storage object the iterator refers to, and returns that code point.
virtual UChar | current (void) const
| Returns the code unit the iterator currently refers to.
virtual UChar32 | current32 (void) const
| Returns the code point the iterator currently refers to.
virtual UChar | next (void)
| Advances to the next code unit in the iteration range (toward endIndex()), and returns that code unit.
virtual UChar | nextPostInc (void)
| Gets the current code unit for returning and advances to the next code unit in the iteration range (toward endIndex()).
virtual UChar32 | next32 (void)
| Advances to the next code point in the iteration range (toward endIndex()), and returns that code point.
virtual UChar32 | next32PostInc (void)
| Gets the current code point for returning and advances to the next code point in the iteration range (toward endIndex()).
virtual UBool | hasNext ()
| Returns FALSE if there are no more code units or code points at or after the current position in the iteration range.
virtual UChar | previous (void)
| Advances to the previous code unit in the iteration range (toward startIndex()), and returns that code unit.
virtual UChar32 | previous32 (void)
| Advances to the previous code point in the iteration range (toward startIndex()), and returns that code point.
virtual UBool | hasPrevious ()
| Returns FALSE if there are no more code units or code points before the current position in the iteration range.
virtual int32_t | move (int32_t delta, EOrigin origin)
| Moves the current position relative to the start or end of the iteration range, or relative to the current position itself.
virtual int32_t | move32 (int32_t delta, EOrigin origin)
| Moves the current position relative to the start or end of the iteration range, or relative to the current position itself.
void | setText (const UChar *newText, int32_t newTextLength)
| Sets the iterator to iterate over a new range of text.
virtual void | getText (UnicodeString &result)
| Copies the UChar array under iteration into the UnicodeString referred to by "result".
virtual UClassID | getDynamicClassID (void) const
| Return a class ID for this object (not really public).
## Static Public Member Functions
static UClassID | getStaticClassID (void)
| Return a class ID for this class (not really public).
## Protected Member Functions
| UCharCharacterIterator ()
| Protected constructor.
## Protected Attributes
const UChar * | text
| Protected member text.

## Detailed Description

A concrete subclass of CharacterIterator that iterates over the characters (code units or code points) in a UChar array.

It's possible not only to create an iterator that iterates over an entire UChar array, but also to create one that iterates over only a subrange of a UChar array (iterators over different subranges of the same UChar array don't compare equal).

See also:
  CharacterIterator

  ForwardCharacterIterator

Stable:
  ICU 2.0

Definition at line 33 of file uchriter.h.

## Constructor & Destructor Documentation

UCharCharacterIterator::UCharCharacterIterator | ( | const UChar * | textPtr,
|  | int32_t | length |
| ) |  |  |

Create an iterator over the UChar array referred to by "textPtr".

The iteration range is 0 to `length-1`. text is only aliased, not adopted (the destructor will not delete it).

Parameters:

  | textPtr | The UChar array to be iterated over
  | length | The length of the UChar array

Stable:
  ICU 2.0

UCharCharacterIterator::UCharCharacterIterator | ( | const UChar * | textPtr,
|  | int32_t | length,
|  | int32_t | position |
| ) |  |  |

Create an iterator over the UChar array referred to by "textPtr".

The iteration range is 0 to `length-1`. text is only aliased, not adopted (the destructor will not delete it). The starting position is specified by "position". If "position" is outside the valid iteration range, the behavior of this object is undefined.

Parameters:

  | textPtr | The UChar array to be iteratd over
  | length | The length of the UChar array
  | position | The starting position of the iteration

Stable:
  ICU 2.0

UCharCharacterIterator::UCharCharacterIterator | ( | const UChar * | textPtr,
|  | int32_t | length,
|  | int32_t | textBegin,
|  | int32_t | textEnd,
|  | int32_t | position |
| ) |  |  |

Create an iterator over the UChar array referred to by "textPtr".

The iteration range is 0 to `end-1`. text is only aliased, not adopted (the destructor will not delete it). The starting position is specified by "position". If begin and end do not form a valid iteration range or "position" is outside the valid iteration range, the behavior of this object is undefined.

Parameters:

  | textPtr | The UChar array to be iterated over
  | length | The length of the UChar array
  | textBegin | The begin position of the iteration range
  | textEnd | The end position of the iteration range
  | position | The starting position of the iteration

Stable:
  ICU 2.0

UCharCharacterIterator::UCharCharacterIterator | ( | const UCharCharacterIterator & | that | ) |

Copy constructor.

The new iterator iterates over the same range of the same string as "that", and its initial position is the same as "that"'s current position.

Parameters:

  | that | The UCharCharacterIterator to be copied

Stable:
  ICU 2.0

virtual UCharCharacterIterator::~UCharCharacterIterator | ( |  | ) | `[virtual]`

Destructor.

Stable:
  ICU 2.0

UCharCharacterIterator::UCharCharacterIterator | ( |  | ) | `[protected]`

Protected constructor.

Stable:
  ICU 2.0

## Member Function Documentation

virtual CharacterIterator* UCharCharacterIterator::clone | ( | void |  | ) | const`[virtual]`

Returns a new UCharCharacterIterator referring to the same character in the same range of the same string as this one.

The caller must delete the new iterator.

Returns:
  the CharacterIterator newly created

Stable:
  ICU 2.0

Implements CharacterIterator.

Reimplemented in StringCharacterIterator.

virtual UChar UCharCharacterIterator::current | ( | void |  | ) | const`[virtual]`

Returns the code unit the iterator currently refers to.

Returns:
  the code unit the iterator currently refers to.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::current32 | ( | void |  | ) | const`[virtual]`

Returns the code point the iterator currently refers to.

Returns:
  the code point the iterator currently refers to.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar UCharCharacterIterator::first | ( | void |  | ) | `[virtual]`

Sets the iterator to refer to the first code unit in its iteration range, and returns that code unit.

This can be used to begin an iteration with next().

Returns:
  the first code unit in its iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::first32 | ( | void |  | ) | `[virtual]`

Sets the iterator to refer to the first code point in its iteration range, and returns that code unit, This can be used to begin an iteration with next32().

Note that an iteration with next32PostInc(), beginning with, e.g., setToStart() or firstPostInc(), is more efficient.

Returns:
  the first code point in its iteration range

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::first32PostInc | ( | void |  | ) | `[virtual]`

Sets the iterator to refer to the first code point in its iteration range, returns that code point, and moves the position to the second code point.

This is an alternative to setToStart() for forward iteration with next32PostInc().

Returns:
  the first code point in its iteration range.

Stable:
  ICU 2.0

Reimplemented from CharacterIterator.

virtual UChar UCharCharacterIterator::firstPostInc | ( | void |  | ) | `[virtual]`

Sets the iterator to refer to the first code unit in its iteration range, returns that code unit, and moves the position to the second code unit.

This is an alternative to setToStart() for forward iteration with nextPostInc().

Returns:
  the first code unit in its iteration range

Stable:
  ICU 2.0

Reimplemented from CharacterIterator.

virtual UClassID UCharCharacterIterator::getDynamicClassID | ( | void |  | ) | const`[virtual]`

Return a class ID for this object (not really public).

Returns:
  a class ID for this object.

Stable:
  ICU 2.0

Implements ForwardCharacterIterator.

Reimplemented in StringCharacterIterator.

static UClassID UCharCharacterIterator::getStaticClassID | ( | void |  | ) | `[static]`

Return a class ID for this class (not really public).

Returns:
  a class ID for this class

Stable:
  ICU 2.0

Reimplemented in StringCharacterIterator.

virtual void UCharCharacterIterator::getText | ( | UnicodeString & | result | ) | `[virtual]`

Copies the UChar array under iteration into the UnicodeString referred to by "result".

Even if this iterator iterates across only a part of this string, the whole string is copied.

Parameters:

  | result | Receives a copy of the text under iteration.

Stable:
  ICU 2.0

Implements CharacterIterator.

Reimplemented in StringCharacterIterator.

virtual int32_t UCharCharacterIterator::hashCode | ( | void |  | ) | const`[virtual]`

Generates a hash code for this iterator.

Returns:
  the hash code.

Stable:
  ICU 2.0

Implements ForwardCharacterIterator.

virtual UBool UCharCharacterIterator::hasNext | ( |  | ) | `[virtual]`

Returns FALSE if there are no more code units or code points at or after the current position in the iteration range.

This is used with nextPostInc() or next32PostInc() in forward iteration.

Returns:
  FALSE if there are no more code units or code points at or after the current position in the iteration range.

Stable:
  ICU 2.0

Implements ForwardCharacterIterator.

virtual UBool UCharCharacterIterator::hasPrevious | ( |  | ) | `[virtual]`

Returns FALSE if there are no more code units or code points before the current position in the iteration range.

This is used with previous() or previous32() in backward iteration.

Returns:
  FALSE if there are no more code units or code points before the current position in the iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar UCharCharacterIterator::last | ( | void |  | ) | `[virtual]`

Sets the iterator to refer to the last code unit in its iteration range, and returns that code unit.

This can be used to begin an iteration with previous().

Returns:
  the last code unit in its iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::last32 | ( | void |  | ) | `[virtual]`

Sets the iterator to refer to the last code point in its iteration range, and returns that code unit.

This can be used to begin an iteration with previous32().

Returns:
  the last code point in its iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual int32_t UCharCharacterIterator::move | ( | int32_t | delta,
|  | EOrigin | origin |
| ) |  |  | `[virtual]`

Moves the current position relative to the start or end of the iteration range, or relative to the current position itself.

The movement is expressed in numbers of code units forward or backward by specifying a positive or negative delta.

Parameters:

  | delta | the position relative to origin. A positive delta means forward; a negative delta means backward.
  | origin | Origin enumeration {kStart, kCurrent, kEnd}

Returns:
  the new position

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual int32_t UCharCharacterIterator::move32 | ( | int32_t | delta,
|  | EOrigin | origin |
| ) |  |  | `[virtual]`

Moves the current position relative to the start or end of the iteration range, or relative to the current position itself.

The movement is expressed in numbers of code points forward or backward by specifying a positive or negative delta.

Parameters:

  | delta | the position relative to origin. A positive delta means forward; a negative delta means backward.
  | origin | Origin enumeration {kStart, kCurrent, kEnd}

Returns:
  the new position

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar UCharCharacterIterator::next | ( | void |  | ) | `[virtual]`

Advances to the next code unit in the iteration range (toward endIndex()), and returns that code unit.

If there are no more code units to return, returns DONE.

Returns:
  the next code unit in the iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::next32 | ( | void |  | ) | `[virtual]`

Advances to the next code point in the iteration range (toward endIndex()), and returns that code point.

If there are no more code points to return, returns DONE. Note that iteration with "pre-increment" semantics is less efficient than iteration with "post-increment" semantics that is provided by next32PostInc().

Returns:
  the next code point in the iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::next32PostInc | ( | void |  | ) | `[virtual]`

Gets the current code point for returning and advances to the next code point in the iteration range (toward endIndex()).

If there are no more code points to return, returns DONE.

Returns:
  the current point.

Stable:
  ICU 2.0

Implements ForwardCharacterIterator.

virtual UChar UCharCharacterIterator::nextPostInc | ( | void |  | ) | `[virtual]`

Gets the current code unit for returning and advances to the next code unit in the iteration range (toward endIndex()).

If there are no more code units to return, returns DONE.

Returns:
  the current code unit.

Stable:
  ICU 2.0

Implements ForwardCharacterIterator.

UCharCharacterIterator& UCharCharacterIterator::operator= | ( | const UCharCharacterIterator & | that | ) |

Assignment operator.

*this is altered to iterate over the sane range of the same string as "that", and refers to the same character within that string as "that" does.

Parameters:

  | that | The object to be copied

Returns:
  the newly created object

Stable:
  ICU 2.0

virtual UBool UCharCharacterIterator::operator== | ( | const ForwardCharacterIterator & | that | ) | const`[virtual]`

Returns true if the iterators iterate over the same range of the same string and are pointing at the same character.

Parameters:

  | that | The ForwardCharacterIterator used to be compared for equality

Returns:
  true if the iterators iterate over the same range of the same string and are pointing at the same character.

Stable:
  ICU 2.0

Implements ForwardCharacterIterator.

Reimplemented in StringCharacterIterator.

virtual UChar UCharCharacterIterator::previous | ( | void |  | ) | `[virtual]`

Advances to the previous code unit in the iteration range (toward startIndex()), and returns that code unit.

If there are no more code units to return, returns DONE.

Returns:
  the previous code unit in the iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::previous32 | ( | void |  | ) | `[virtual]`

Advances to the previous code point in the iteration range (toward startIndex()), and returns that code point.

If there are no more code points to return, returns DONE.

Returns:
  the previous code point in the iteration range.

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar UCharCharacterIterator::setIndex | ( | int32_t | position | ) | `[virtual]`

Sets the iterator to refer to the "position"-th code unit in the text-storage object the iterator refers to, and returns that code unit.

Parameters:

  | position | the position within the text-storage object

Returns:
  the code unit

Stable:
  ICU 2.0

Implements CharacterIterator.

virtual UChar32 UCharCharacterIterator::setIndex32 | ( | int32_t | position | ) | `[virtual]`

Sets the iterator to refer to the beginning of the code point that contains the "position"-th code unit in the text-storage object the iterator refers to, and returns that code point.

The current position is adjusted to the beginning of the code point (its first code unit).

Parameters:

  | position | the position within the text-storage object

Returns:
  the code unit

Stable:
  ICU 2.0

Implements CharacterIterator.

void UCharCharacterIterator::setText | ( | const UChar * | newText,
|  | int32_t | newTextLength |
| ) |  |  |

Sets the iterator to iterate over a new range of text.

Stable:
  ICU 2.0

Reimplemented in StringCharacterIterator.

## Field Documentation

const UChar* UCharCharacterIterator::text`[protected]`

Protected member text.

Stable:
  ICU 2.0

Reimplemented in StringCharacterIterator.

Definition at line 376 of file uchriter.h.

The documentation for this class was generated from the following file:

- uchriter.h