Преобразование Unicode в многобайтовый

У меня есть маленькая проблема, я хочу конвертировать Unicode в Multi Byte, есть ли способ

6 ответов

Решение
std::string NarrowString(const std::wstring& str, const char* localeName = "C")
{
  std::string result;
  result.resize(str.size());

  std::locale loc(localeName);

  std::use_facet<std::ctype<wchar_t> >(loc).narrow(
    str.c_str(), str.c_str() + str.size(), '?',  &*result.begin());

  return result;
}

Он должен использовать текущую локаль для преобразования строки в юникоде. Для символов, которые не принадлежат кодовой странице, '?' символ используется. Протестировано с Visual C++ 2005/2008.

Три варианта от руки:

У меня прекрасно работает wcstombs:)

В большинстве случаев будет достаточно WideCharToMultiByte().

Использовать WideCharToMultiByte

Есть функция WinCAP WideCharToMultiByte.

Другие вопросы по тегам