目前使用哪种Boost UTF后端?

时间:2016-05-04 14:51:19

标签: 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");

有没有办法检查,是否确实使用了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; });

1 个答案:

答案 0 :(得分:2)

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

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

      

    后端通常在本地化后端内注册   经理并允许不同后端的透明支持,以便用户   只需将应用程序链接到后端即可切换后端   纠正一个。

         

    ...

         

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

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