c – 为什么std :: locale loc(“en_US”)会抛出异常?

前端之家收集整理的这篇文章主要介绍了c – 为什么std :: locale loc(“en_US”)会抛出异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用美国或英国语言环境字符串实例化std :: locale对象.
std :: locale loc(“en_US”)和std :: locale loc(“en_GB”)都会引发错误的语言环境名称运行时异常.使用“”或“C”创建区域设置可以正常工作;但是,我在设置单个国家/地区时遇到问题.

我想这样做的原因是为了单元测试目的,以确保字符串排序方法的集合正常工作.

我还应该指出,我使用Visual Studio 2008在Windows中进行编码,如果可能的话,我希望保持代码跨平台.

解决方法

您最好使用使用ICU库的boost.locale. ICU提供了许多语言环境,并且不依赖于您使用的操作系统.要生成std :: locale,您需要编写:
boost::locale::generator gen;
std::locale loc = gen("en_US");

欲获得更多信息:
http://www.boost.org/doc/libs/1_57_0_b1/libs/locale/doc/html/index.html

猜你在找的C&C++相关文章