【问题标题】:Get the global locale that is currently set in C++?获取当前在 C++ 中设置的全局语言环境?
【发布时间】:2012-03-29 20:36:28
【问题描述】:

在 C++ 中,我可以像这样设置当前语言环境:

std::locale::global(std::locale(name))

但是我怎样才能获取当前的全局语言环境?

在我的代码中,我需要获取当前语言环境,将其保存到 tmp var,将全局语言环境设置为其他内容,输出一些内容,然后将其设置回之前的语言环境。

【问题讨论】:

  • 没用过,这就是你想要的吗? en.cppreference.com/w/cpp/io/ios_base/getloc 编辑:没关系,我发现返回值是当前语言环境。请参阅 Corbin 的回答。
  • 您想要全局语言环境(默认为"C")还是环境的语言环境?
  • 我想要任何人在使用std::locale::global之前设置的值。

标签: c++ locale


【解决方案1】:

如果你调用std::locale的默认构造函数,你就明白了。

std::locale the_global_locale; // <-- automatically correct to std::locale::global
                               //     or a copy of std::locale::classic

更多信息在这里:http://en.cppreference.com/w/cpp/locale/locale/locale

【讨论】:

    【解决方案2】:

    它的返回值是旧的语言环境,所以就使用它。

    locale l = locale::global(locale(name));
    //do some stuff here
    locale::global(l);
    

    编辑:可能有用:http://en.cppreference.com/w/cpp/locale/locale/global

    【讨论】:

      【解决方案3】:

      正如 ipc 所说,std::locale 的默认构造函数为您提供了当前全局语言环境的副本,但为什么您需要缓存然后重置全局语言环境?

      使用语言环境的 C++ 例程通常可以使用您指定的 C++ 语言环境对象,因此您根本不必弄乱全局语言环境。使用语言环境对象应该优先于使用 C++ 全局语言环境。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        • 1970-01-01
        • 2014-10-25
        • 1970-01-01
        • 2021-09-29
        • 2017-11-01
        • 1970-01-01
        相关资源
        最近更新 更多