【发布时间】:2016-08-30 02:22:48
【问题描述】:
按照升压手册(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; });
【问题讨论】:
-
我能看到的最多的是管理器上的
get(),它可以让你获取当前的后端。然而后端的接口并没有提供任何识别它们的方法,并且所有的实现都隐藏在库的编译部分中,所以你甚至不能尝试转换,因为类型没有暴露。 -
我认为你不能,至少在使用静态
global()助手时不能。如果您手动将后端添加到列表中,您可能能够比较返回的 auto_ptrs 的基础指针。但由于select()方法可能仅适用于类别的子集(允许组合不同的后端),因此我不确定这些信息有多大用处。