首页 > 代码库 > string类型转LPCTSTR

string类型转LPCTSTR

今天在写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 *

 

string类型转LPCTSTR