当前使用哪个Boost UTF后端

Which Boost UTF backend is currently used?

本文关键字:Boost UTF 后端      更新时间:2023-10-16

遵循升压手册(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");

现在有什么方法可以检查是否确实使用了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; });

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

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

    后端通常在本地化后端内部注册管理器,并允许透明地支持不同的后端,因此用户可以通过简单地将应用程序链接到纠正一个。

    每个后端都可以安装不同的默认优先级,因此当您使用两个不同的后端时,您可以指定priotiry以便这个后端将根据它们的优先级进行选择。

这将不必要地使实现复杂化,因为除了优先级特性之外,还可以为特定的语言环境类别设置特定的后端。Boost.Locale被设计为"只使用"它配置的任何后端,考虑到透明性和二进制兼容性。正如一位评论者所说,这并不是真正有用的信息,因为你正在使用这个库来抽象库/平台特定的功能。