ICU探测所有货币符号

时间:2010-10-12 15:53:08

标签: c++ unicode map icu

有没有办法探测代表该库支持的货币符号的所有ICU libraryUChar's

我当前的解决方案是遍历所有语言环境和每个语言环境,执行以下操作:

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

然后将currencySymbol中的每个UChar保存到地图中(所以没有重复)。

1 个答案:

答案 0 :(得分:2)

所有货币符号都有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;
}