我正在尝试将boost :: locale库用于将在不同语言环境下运行的应用程序。 我注意到std :: locale
的以下区别std::locale loc("");
从用户设置创建区域设置。 F.e。
std::cout.imbue(loc);
double d = 1.25;
std::cout << d;
将在我的德语系统上输出1,25,因为我们使用逗号作为小数分隔符。使用以下boost :: locale代码
不是这样boost::locale::generator gen;
std::locale loc = gen("");
std::cout.imbue(loc);
double d = 1.25;
std::cout << d;
输出1.25。 我的问题不是为什么会出现这种差异,而是如何创建一个考虑用户设置的提升语言环境?我找到了许多关于如何将de-DE等ID传递给语言环境生成器的示例,但这并不能帮助我,因为我需要动态地找到用户语言环境。
使用VC ++ 2015进行了测试,在Windows 10上测试了1.57,我没有将ICU用于boost :: locale。