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

C++11:std::locale::empty()甚至是一件事吗?

  •  5
  • andrgolubev  · 技术社区  · 8 年前

    试图编译 some code 从StackOverflow,基本上,这些行:

    std::wifstream wif(filename);
    wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
    

    GCC版本: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0

    我得到一个编译错误:

    “empty”不是“std::locale”的成员

    我同意编译器的观点,并通过以下文档进行了检查: cppreference -没有关于这件事的信息。头文件也不显示任何内容。

    我想知道,这只是我还是另一个主题的示例代码。。。

    它可以是MSVC功能吗?(我使用的示例代码来自与Windows相关的问题。)

    1 回复  |  直到 8 年前
        1
  •  3
  •   Community CDub    4 年前

    这是locale类的特定于平台的扩展,过去在 this MSVC documentation *:

    在此实现中,您还可以调用静态成员函数:

    static locale empty( );
    

    建造 locale 没有面的对象。它也是一个透明的区域设置;如果模板起作用 has_facet use_facet 在透明区域设置中找不到请求的方面,它们首先查询全局区域设置,如果是透明的,则查询经典区域设置。

    *MSVC文档链接现在已过时,有关最佳替换,请参阅 this documentation page 相反