C++ WString与String互相转换
std::wstring StringToWString(const std::string& str) { int num = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); wchar_t *wide = new wchar_t[num]; MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, wide, num); std::wstring w_str(wide); delete[] wide; return w_str; } std::string WStringToString(const std::wstring &wstr) { std::string str; int nLen = (int)wstr.length(); str.resize(nLen, ' '); int nResult = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wstr.c_str(), nLen, (LPSTR)str.c_str(), nLen, NULL, NULL); if (nResult == 0) { return ""; } return str; }
如果程序有时候用utf-8中文的话,一般从网络传回的数据是utf-8,StringToWString后是乱码,那么需要使用下面方案
std::wstring StringToWString(const std::string& str) { setlocale(LC_ALL, "chs"); const char* point_to_source = str.c_str(); size_t new_size = str.size() + 1; wchar_t *point_to_destination = new wchar_t[new_size]; wmemset(point_to_destination, 0, new_size); mbstowcs(point_to_destination, point_to_source, new_size); std::wstring result = point_to_destination; delete[]point_to_destination; setlocale(LC_ALL, "C"); return result; }
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。