【问题标题】:Is the plus/minus sign internationalized?加号/减号是否国际化?
【发布时间】:2014-02-02 00:19:06
【问题描述】:

我一直在寻找一种将我自己的自定义符号字符添加到正数和负数的方法,但似乎没有标准的方法可以做到这一点。加减号在 IOStreams 中国际化了吗?我能找到的最接近覆盖它的是std::moneypunct 中的positive_sign()/negative_sign() 函数,但这仅适用于货币数据。这样的事情似乎适合std::numpunct

【问题讨论】:

    标签: c++ stl localization internationalization iostream


    【解决方案1】:

    符号字符是使用std::ctype<cT>::widen(s) 获得的,其中s 是符号字符。没有自定义的默认方法可以通过重写特定的成员函数来专门更改符号字符。但是,使用任何其他符号字符创建自定义 std::num_put<...>std::num_get<...> 是相当直接的。小数点和千位分隔符被处理不同的原因是它们嵌入在实际值的某个地方,并且创建特殊版本的代码并不容易。

    【讨论】:

    • 你知道numpunct facet中没有加减函数的原因吗?
    • @0x499602D2:我能想到的主要原因是已经说明的原因(它已经很容易定制)并且可能很少需要它:我不知道任何语言使用不同的符号(与小数点和千位分隔符不同,例如:德语表示法使用逗号作为小数点,使用点作为千位分隔符)。本地化工具主要模仿 C 语言的使用并执行明确要求的操作。
    • 根据可通过cldr.unicode.org/translation/number-symbols 访问的信息,某些语言的“+”前面有从左到右的标记,并且减号有一些不同的设置,尽管后面的数据似乎不可靠(这部分取决于为每种语言定义它的人是否理解连字符减号和减号之间的区别)。显然需要将加号和减号国际化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多