windows unicode和多字节字符集转换示例
VS: [项目属性]->[配置属性]->[常规]->[字符集]
在该属性中选择"使用多字节字符集"或者"使用Unicode字符集" 本代码段均可处理
#include#include #ifdef _WIN32 #include std::string WcharToChar(const wchar_t* wp, size_t encode) { std::string str; int len = WideCharToMultiByte((UINT)encode, 0, wp, (int)wcslen(wp), NULL, 0, NULL, NULL); char *m_char = new char[len + 1]; WideCharToMultiByte((UINT)encode, 0, wp, (int)wcslen(wp), m_char, len, NULL, NULL); m_char[len] = ' '; str = m_char; delete m_char; return str; } std::wstring CharToWchar(const char* c, size_t encode) { std::wstring str; int len = MultiByteToWideChar((UINT)encode, 0, c, (int)strlen(c), NULL, 0); wchar_t* m_wchar = new wchar_t[len + 1]; MultiByteToWideChar((UINT)encode, 0, c, (int)strlen(c), m_wchar, len); m_wchar[len] = ' '; str = m_wchar; delete m_wchar; return str; } #endif // _WIN32 int main(int argc, char *argv[]) { #ifdef _WIN32 std::string str_test = "hello world."; std::wstring wstr = CharToWchar(str_test.c_str(), CP_ACP); std::wcout << wstr << std::endl; #endif // _WIN32 return 0; }



