今天在写MFC的时候,发现MessageBox函数的类型是LPCTSTR,而我使用C++ STL的string类型却无法直接转,所以在网上找到一段函数,用于转化
std::wstring StoWs(const std::string& s) { int len; int slength = (int)s.length() + 1; len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); wchar_t* buf = new wchar_t[len]; MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len); std::wstring r(buf); delete[] buf; return r; } std::string s; 如果是 UNICODE 字符的话: std::wstring stemp = StoWs(s); LPCWSTR result = stemp.c_str(); 如果不是: LPCWSTR result = s.c_str();
另附上一段对应类型表
LPSTR - (long) pointer to string - char * LPCSTR - (long) pointer to constant string - const char * LPWSTR - (long) pointer to Unicode (wide) string - wchar_t * LPCWSTR - (long) pointer to constant Unicode (wide) string - const wchar_t * LPTSTR - (long) pointer to TCHAR (Unicode if UNICODE is defined, ANSI if not) string - TCHAR * LPCTSTR - (long) pointer to constant TCHAR string - const TCHAR *
时间: 2024-10-17 22:20:21