代码之家  ›  专栏  ›  技术社区  ›  Alan

为什么std::locale loc(“en\u US”)引发异常?

  •  6
  • Alan  · 技术社区  · 14 年前

    std::locale 具有美国或英国语言环境字符串的对象。
    二者都 std::locale loc("en_US") std::locale loc("en_GB") 区域设置名称错误 运行时异常。使用创建区域设置 "" "C" 工作精细;然而,我在设置单个国家/地区时遇到了问题。

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

    2 回复  |  直到 9 年前
        1
  •  6
  •   avpaderno    7 年前

    std::locale 支持是具体实施的;可能是实现不支持作为参数传递的字符串。

    由于您是在Windows中编程,您可以感兴趣 Language Strings ,其中列出了 setlocal Country/Region Strings en美国 , nl BE 中国香港 ).

    您可以在上找到更多信息 std::locale::global(std::locale("zh-CN")) Gets "Bad locale name"??

        2
  •  5
  •   Vadim Pashaev    10 年前

    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