2009-12-21 3 views
1

형식 문자열 (예 : "mm/dd/yyy")을 제공하여 시간 문자열 형식을 지정할 수있는 것과 비슷한 방식으로 ICU 라이브러리를 사용하여 통화 문자열을 사용자 정의 할 수 있습니까?ICU 맞춤 통화 형식 지정 (C++)

주어진 로케일 (예 : USD)에서 원하는 경우 모든 통화 문자열을 "xxx.00 $ USD"로 되돌릴 수 있습니다.

답변

1

http://icu-project.org/apiref/icu4c/classDecimalFormat.html 참조 특히

: 패턴 구문을 보려면 http://icu-project.org/apiref/icu4c/classDecimalFormat.html#aadc21eab2ef6252f25eada5440e3c65

참조 : http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details

내가 이것을 사용하지 않았지만, ICU의 내 지식이 방향이다.

그러나 내가 사용하는 제안 :

http://icu-project.org/apiref/icu4c/classNumberFormat.htmlcreateCurrencyInstance 회원 및 다음 사용 setMaximumIngegerDigits 또는 당신이 필요하게 다른 기능을 - 훨씬 더 지역화 될 것이라고. 어떤 문화에 대해서도 아무 것도 생각하지 마십시오. "10,000 USD"는 분수 부품 분리에 사용되는 일부 국가에서 "$ 10"으로 잘못 해석 될 수 있습니다.

이렇게 조심하십시오.

0

ICU 라이브러리의 createCurrencyInstance()을 사용하십시오.

+0

해당 로케일에 포함 된 주어진 로케일의 통화 형식 만 반환한다고 생각합니다. 따라서 USD의 경우 "$ 100.00 USD"와 같은 것을 반환합니다. 원하는 형식으로 사용자 정의 할 수있는 방법을 찾고 있습니다. 따라서 "[value] [symbol] [currency name]"이 로켈이 일반적으로 표시되는 방식이 아니더라도 원하는 경우 얻을 수 있습니다. – Ternary

1

당신은 당신이 그것에에 applyPattern를 호출 할 수 있습니다 ... DecimalFormat

if (((const NumberFormat*)fmt)->getDynamicClassID() == DecimalFormat::getStaticClassID()) 
    { const DecimalFormat* df = (const DecimalFormat*) fmt; ... 

에 캐스팅하는 것이 안전합니다 다음 경우, 통화 인스턴스를 만들 수 있습니다. '특수 패턴 문자'아래의 ¤, ¤¤, ¤¤¤에 대한 정보를 참조하십시오