ICU 71.1 71.1

Public Types | Public Member Functions | Static Public Member Functions
icu::FieldPosition Class Reference

`FieldPosition` is a simple class used by `Format` and its subclasses to identify fields in formatted output. More...

`#include <fieldpos.h>`

Inheritance diagram for icu::FieldPosition:

## Public Types
enum | { DONT_CARE = -1 }
| DONT_CARE may be specified as the field to indicate that the caller doesn't need to specify a field. More...

## Public Member Functions
| FieldPosition ()
| Creates a FieldPosition object with a non-specified field. More...
| FieldPosition (int32_t field)
| Creates a FieldPosition object for the given field. More...
| FieldPosition (const FieldPosition &copy)
| Copy constructor. More...
virtual | ~FieldPosition ()
| Destructor. More...
FieldPosition & | operator= (const FieldPosition &copy)
| Assignment operator. More...
bool | operator== (const FieldPosition &that) const
| Equality operator. More...
bool | operator!= (const FieldPosition &that) const
| Equality operator. More...
FieldPosition * | clone () const
| Clone this object. More...
int32_t | getField (void) const
| Retrieve the field identifier. More...
int32_t | getBeginIndex (void) const
| Retrieve the index of the first character in the requested field. More...
int32_t | getEndIndex (void) const
| Retrieve the index of the character following the last character in the requested field. More...
void | setField (int32_t f)
| Set the field. More...
void | setBeginIndex (int32_t bi)
| Set the begin index. More...
void | setEndIndex (int32_t ei)
| Set the end index. More...
virtual UClassID | getDynamicClassID () const override
| ICU "poor man's RTTI", returns a UClassID for the actual class. More...
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor. More...

## Static Public Member Functions
static UClassID | getStaticClassID ()
| ICU "poor man's RTTI", returns a UClassID for this class. More...

## Detailed Description

`FieldPosition` is a simple class used by `Format` and its subclasses to identify fields in formatted output.

Fields are identified by constants, whose names typically end with `_FIELD`, defined in the various subclasses of `Format`. See `ERA_FIELD` and its friends in `DateFormat` for an example.

`FieldPosition` keeps track of the position of the field within the formatted output with two indices: the index of the first character of the field and the index of the last character of the field.

One version of the `format` method in the various `Format` classes requires a `FieldPosition` object as an argument. You use this `format` method to perform partial formatting or to get information about the formatted output (such as the position of a field).

The FieldPosition class is not intended for public subclassing.

Below is an example of using `FieldPosition` to aid alignment of an array of formatted floating-point numbers on their decimal points:

    double doubleNum[] = {123456789.0, -12345678.9, 1234567.89, -123456.789,
               12345.6789, -1234.56789, 123.456789, -12.3456789, 1.23456789};
    int dNumSize = (int)(sizeof(doubleNum)/sizeof(double));

    UErrorCode status = U_ZERO_ERROR;
    DecimalFormat* fmt = (DecimalFormat*) NumberFormat::createInstance(status);
    fmt->setDecimalSeparatorAlwaysShown(true);

    const int tempLen = 20;
    char temp[tempLen];

    for (int i=0; i<dNumSize; i++) {
        FieldPosition pos(NumberFormat::INTEGER_FIELD);
        UnicodeString buf;
        char fmtText[tempLen];
        ToCharString(fmt->format(doubleNum[i], buf, pos), fmtText);
        for (int j=0; j<tempLen; j++) temp[j] = ' '; // clear with spaces
        temp[__min(tempLen, tempLen-pos.getEndIndex())] = '\0';
        cout << temp << fmtText   << endl;
    }
    delete fmt;

<p<blockquote>

The code will generate the following output:

    123,456,789.000
    -12,345,678.900
      1,234,567.880
       -123,456.789
         12,345.678
         -1,234.567
            123.456
            -12.345
              1.234

Definition at line 110 of file fieldpos.h.

## Member Enumeration Documentation

## ◆ anonymous enum

anonymous enum

DONT_CARE may be specified as the field to indicate that the caller doesn't need to specify a field.

Stable:
  ICU 2.0

Definition at line 117 of file fieldpos.h.

## Constructor & Destructor Documentation

## ◆ FieldPosition() [1/3]

icu::FieldPosition::FieldPosition | ( |  | ) |
| inline

Creates a FieldPosition object with a non-specified field.

Stable:
  ICU 2.0

Definition at line 123 of file fieldpos.h.

## ◆ FieldPosition() [2/3]

icu::FieldPosition::FieldPosition | ( | int32_t | field | ) |
| inline

Creates a FieldPosition object for the given field.

Fields are identified by constants, whose names typically end with _FIELD, in the various subclasses of Format.

See also
  NumberFormat::INTEGER_FIELD
  NumberFormat::FRACTION_FIELD
  DateFormat::YEAR_FIELD
  DateFormat::MONTH_FIELD

Stable:
  ICU 2.0

Definition at line 137 of file fieldpos.h.

## ◆ FieldPosition() [3/3]

icu::FieldPosition::FieldPosition | ( | const FieldPosition & | copy | ) |
| inline

Copy constructor.

Parameters

  copy | the object to be copied from.

Stable:
  ICU 2.0

Definition at line 145 of file fieldpos.h.

## ◆ ~FieldPosition()

virtual icu::FieldPosition::~FieldPosition | ( |  | ) |
| virtual

Destructor.

Stable:
  ICU 2.0

## Member Function Documentation

## ◆ clone()

FieldPosition* icu::FieldPosition::clone | ( |  | ) | const

Clone this object.

Clones can be used concurrently in multiple threads. If an error occurs, then NULL is returned. The caller must delete the clone.

Returns
  a clone of this object

See also
  getDynamicClassID

Stable:
  ICU 2.8

## ◆ getBeginIndex()

int32_t icu::FieldPosition::getBeginIndex | ( | void |  | ) | const
| inline

Retrieve the index of the first character in the requested field.

Returns
  the index of the first character in the requested field.

Stable:
  ICU 2.0

Definition at line 202 of file fieldpos.h.

## ◆ getDynamicClassID()

virtual UClassID icu::FieldPosition::getDynamicClassID | ( |  | ) | const
| override virtual

ICU "poor man's RTTI", returns a UClassID for the actual class.

Stable:
  ICU 2.2

Reimplemented from icu::UObject.

## ◆ getEndIndex()

int32_t icu::FieldPosition::getEndIndex | ( | void |  | ) | const
| inline

Retrieve the index of the character following the last character in the requested field.

Returns
  the index of the character following the last character in the requested field.

Stable:
  ICU 2.0

Definition at line 211 of file fieldpos.h.

## ◆ getField()

int32_t icu::FieldPosition::getField | ( | void |  | ) | const
| inline

Retrieve the field identifier.

Returns
  the field identifier.

Stable:
  ICU 2.0

Definition at line 195 of file fieldpos.h.

## ◆ getStaticClassID()

static UClassID icu::FieldPosition::getStaticClassID | ( |  | ) |
| static

ICU "poor man's RTTI", returns a UClassID for this class.

Stable:
  ICU 2.2

## ◆ operator!=()

bool icu::FieldPosition::operator!= | ( | const FieldPosition & | that | ) | const
| inline

Equality operator.

Parameters

  that | the object to be compared with.

Returns
  true if the two field positions are not equal, false otherwise.

Stable:
  ICU 2.0

Definition at line 286 of file fieldpos.h.

References icu::operator==().

## ◆ operator=()

FieldPosition & icu::FieldPosition::operator= | ( | const FieldPosition & | copy | ) |
| inline

Assignment operator.

Parameters

  copy | the object to be copied from.

Stable:
  ICU 2.0

Definition at line 269 of file fieldpos.h.

## ◆ operator==()

bool icu::FieldPosition::operator== | ( | const FieldPosition & | that | ) | const
| inline

Equality operator.

Parameters

  that | the object to be compared with.

Returns
  true if the two field positions are equal, false otherwise.

Stable:
  ICU 2.0

Definition at line 278 of file fieldpos.h.

## ◆ setBeginIndex()

void icu::FieldPosition::setBeginIndex | ( | int32_t | bi | ) |
| inline

Set the begin index.

For use by subclasses of Format.

Parameters

  bi | the new value of the begin index

Stable:
  ICU 2.0

Definition at line 225 of file fieldpos.h.

## ◆ setEndIndex()

void icu::FieldPosition::setEndIndex | ( | int32_t | ei | ) |
| inline

Set the end index.

For use by subclasses of Format.

Parameters

  ei | the new value of the end index

Stable:
  ICU 2.0

Definition at line 232 of file fieldpos.h.

## ◆ setField()

void icu::FieldPosition::setField | ( | int32_t | f | ) |
| inline

Set the field.

Parameters

  f | the new value of the field.

Stable:
  ICU 2.0

Definition at line 218 of file fieldpos.h.

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

- fieldpos.h

icu::NumberFormat::INTEGER_FIELD
@ INTEGER_FIELD
These constants are provided for backwards compatibility only.
Definition: numfmt.h:252
UErrorCode
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
icu::FieldPosition::FieldPosition
FieldPosition()
Creates a FieldPosition object with a non-specified field.
Definition: fieldpos.h:123
U_ZERO_ERROR
@ U_ZERO_ERROR
No error, no warning.
Definition: utypes.h:449
icu::NumberFormat::createInstance
static NumberFormat * createInstance(UErrorCode &)
Create a default style NumberFormat for the current default locale.