ICU Probe Все символы валют - PullRequest
       8

ICU Probe Все символы валют

1 голос
/ 12 октября 2010

Есть ли способ проверить библиотеку ICU для всех UChar's , представляющих символы валют, поддерживаемые библиотекой?

Мое текущее решение состоит в переборе всех локалей и для каждой локали, делая что-то вроде этого:

const DecimalFormatSymbols *formatSymbols = formatter->getDecimalFormatSymbols();
UnicodeString currencySymbol = formatSymbols->getSymbol(DecimalFormatSymbols::kCurrencySymbol);

Затем сохраняем все символы UChar в currencySymbol на карте (без дубликатов).

1 Ответ

2 голосов
/ 12 октября 2010

Все символы валюты имеют категорию Sc (Символ, Валюта), поэтому вы можете просто перечислить все символы из этой категории.

#include <cstdio>
#include <icu/unicode/uchar.h>

UBool print_all_currency_symbols(const void* context, UChar32 start, UChar32 limit, UCharCategory type) {
    if (type == U_CURRENCY_SYMBOL) {
        for (UChar32 c = start; c < limit; ++ c)
            printf("%04x\n", c);
    }
    return TRUE;
}

int main() {
    u_enumCharTypes(print_all_currency_symbols, NULL);

        return 0;
}
...