我在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表中看到哪些特性可以用于哪个后端。