我尝试使用美国或英国语言环境字符串实例化std :: locale对象.
std :: locale loc(“en_US”)和std :: locale loc(“en_GB”)都会引发错误的语言环境名称运行时异常.使用“”或“C”创建区域设置可以正常工作;但是,我在设置单个国家/地区时遇到问题.
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