将Unicode转换为多字节

时间:2009-10-06 13:05:20

标签: c++ visual-c++

我有小问题我想将unicode转换为Multibyte有什么办法

6 个答案:

答案 0 :(得分:7)

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;
}

它应该使用当前的语言环境来转换unicode字符串。对于不属于代码页的字符“?”正在使用caracter。使用Visual C ++ 2005/2008进行测试。

答案 1 :(得分:5)

随手三个选项:

答案 2 :(得分:3)

wcstombs非常适合我:)

答案 3 :(得分:1)

在大多数情况下,WideCharToMultiByte()就足够了。

答案 4 :(得分:0)

WideCharToMultiByte winapi功能。

答案 5 :(得分:0)