Расшифровка Витерби: Как понять рекурсию этого алгоритма?

Это решение является вдохновенным решением dk123, но использует языковой зависимый кодекс decec. Результат - в строках, закодированных в локали вместо utf8 (если он не задан как locale):

std::string w2s(const std::wstring &var)
{
   static std::locale loc("");
   auto &facet = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc);
   return std::wstring_convert<std::remove_reference<decltype(facet)>::type, wchar_t>(&facet).to_bytes(var);
}

std::wstring s2w(const std::string &var)
{
   static std::locale loc("");
   auto &facet = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc);
   return std::wstring_convert<std::remove_reference<decltype(facet)>::type, wchar_t>(&facet).from_bytes(var);
}

Я искал его, но я не могу его найти. Наконец, я обнаружил, что я могу получить правильный грань из std :: locale, используя функцию std :: use_facet () с правильным именем. Надеюсь, это поможет.

0
задан Eva Rolin 17 January 2019 в 08:39
поделиться