フォーマット文字列(「mm / dd / yyy」など)を指定して時間ストリングをフォーマットするのと同じように、ICUライブラリを使用して通貨ストリングをカスタムフォーマットすることは可能ですか。
そのため、特定のロケール(たとえばUSD)に対して、必要に応じて、すべての通貨文字列を「xxx.00$USD」に戻すことができます。
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.htmlとcreateCurrencyInstance
memberを使用してから、 setMaximumIngegerDigitsまたはその他の関数を使用して、必要なものを作成します。これにより、よりローカライズされます。文化については何も想定しないでください。「10,000USD」は、小数部の分離に「、」が使用されている一部の国では「$10」と誤解される可能性があるためです。
ので注意してください。
通貨インスタンスを作成して、それをDecimalFormatにキャストしても安全かどうかを確認できます
if (((const NumberFormat*)fmt)->getDynamicClassID() == DecimalFormat::getStaticClassID())
{ const DecimalFormat* df = (const DecimalFormat*) fmt; ...
…次に、applyPatternを呼び出すことができます。「特殊パターン文字」の¤、¤¤、¤¤¤に関する情報を参照してください。
ICUライブラリのcreateCurrencyInstance()を使用します。