Boost区域设置格式百分比



我在boost::locale::format输出百分比时有一个问题。根据文档(http://www.boost.org/doc/libs/1_48_0/libs/locale/doc/html/localized_text_formatting.html):

)

数字和数字操作符

以下是数字格式化的操作符:

as::number -- format number according to local specifications, it takes into account 
as::percent -- format number as "percent" format. For example:
        cout << as::percent << 0.25 <<endl;
Would create an output that may look like this:
    25%

但是,以下输出"0.25":

#include <string>
#include <iostream>
#include <boost/system/system_error.hpp>
#include <boost/locale.hpp>

int main(int argc, char** argv)
{
    std::cout << boost::locale::as::percent << 0.25 <<std::endl;
}

我已经尝试通过std::locale()以及由boost::locale::generator生成的区域设置来注入std::cout,但无济于事。

似乎我错过了一些明显的问题;有人能暗示一下吗?

这个适合我:

#include <boost/locale.hpp>
#include <iostream>
int main()
{
  boost::locale::generator gen;
  std::locale loc = gen("en_US.UTF-8");
  std::cout.imbue(loc);
  std::cout << boost::locale::as::percent << 0.25 << std::endl;
  return 0;
}

Locale使用4个后端(ICU, posix, winapi, std),但只有ICU后端有百分比特性,这意味着您使用的库不是用ICU库编译的。

您可以在Supported Features表中看到哪些特性可以用于哪个后端。

相关内容

  • 没有找到相关文章

最新更新