Nach dem Boost-Handbuch (http://www.boost.org/doc/libs/1_56_0/libs/locale/doc/html/using_localization_backends.html),Welches Boost UTF-Backend wird derzeit verwendet?
ich mit einem UTF-Backend einstellen:
boost::locale::localization_backend_manager my = boost::locale::localization_backend_manager::global();
my.select("std");
Gibt es eine Möglichkeit, zu überprüfen, ob nun in der Tat das std Backend verwendet wird?
Ich scheine nur in der Lage sein, alle verfügbaren Backends zu bekommen, aber nicht die zur Zeit aktiven
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; });
Die meisten, die ich sehen kann, ist ein 'get()' auf dem Manager, mit dem Sie das aktuelle Backend greifen können. Die Schnittstelle der Backends bietet jedoch keine Möglichkeit, sie zu identifizieren, und die gesamte Implementierung ist im kompilierten Teil der Bibliothek verborgen, sodass Sie nicht einmal versuchen können, zu konvertieren, da die Typen nicht verfügbar sind. –
Ich denke, Sie können nicht, zumindest mit dem statischen 'global()' Helfer. Wenn Sie manuell Backends zur Liste hinzufügen, können Sie möglicherweise die zugrunde liegenden Zeiger der zurückgegebenen auto_ptrs vergleichen. Aber da die 'select()' - Methode nur auf eine Untergruppe von Kategorien angewendet werden kann (erlaubt das Kombinieren verschiedener Backends), bin ich mir nicht sicher, wie nützlich die Information ist. – sebkraemer