目前使用哪种Boost UTF后端?

use*_*652 14 c++ boost utf-8

按照加速手册(http://www.boost.org/doc/libs/1_56_0/libs/locale/doc/html/using_localization_backends.html),

我可以使用以下方法设置UTF后端:

boost::locale::localization_backend_manager my = boost::locale::localization_backend_manager::global();
my.select("std");
Run Code Online (Sandbox Code Playgroud)

有没有办法检查,是否确实使用了std后端?

我似乎只能获得所有可用的后端,但不能获得当前活动的后端

boost::locale::localization_backend_manager lbm = boost::locale::localization_backend_manager::global();
auto s = lbm.get_all_backends();
for_each(s.begin(), s.end(), [](string& x){ cout << x << endl; });
Run Code Online (Sandbox Code Playgroud)

uh *_*per 2

不完全是,不。由于多种原因,无法获取当前后端:

  • 没有公共 API 函数可以让您访问所使用的后端
  • localization_backend使用 pimpl 惯用法来推迟后端的实际实现。localization_backend后端本身或后端本身都没有反射
  • 此评论来自localization_backend.hpp

    后端通常在本地化后端管理器内注册,并允许对不同后端的透明支持,因此用户只需将应用程序链接到正确的后端即可切换后端。

    ...

    每个后端都可以安装不同的默认优先级,因此当您使用两个不同的后端时,您可以指定优先级,以便根据其优先级选择该后端。

这将不必要地使实现变得复杂,因为除了优先级功能之外,还可以为特定的区域设置类别设置特定的后端。Boost.Locale旨在与它配置的任何后端“正常工作”,并考虑到透明度和二进制兼容性。正如评论者所说,这并不是真正有用的信息,因为您正在使用这个库来抽象库/平台特定的功能。