FieldPosition
is a simple class used byFormat
and its subclasses to identify fields in formatted output
FieldPosition
is a simple class used byFormat
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 ofFormat
. SeeERA_FIELD
and its friends inDateFormat
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 variousFormat
classes requires aFieldPosition
object as an argument. You use thisformat
method to perform partial formatting or to get information about the formatted output (such as the position of a field).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;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
alphabetic index hierarchy of classes
this page has been generated automatically by doc++
(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de