我正在用Visual Studio 2015编写一个MFC项目,字符集配置为“使用Unicode字符集”
我需要从std::string
转换为LPWSTR
以与LVITEM::pszText
,CListCtrl
中的AfxMessageBox
等一些MFC对象属性一起使用,...所以我使用来自互联网的这个片段:
String str = "Hello world!";
std::wstring wname(str.begin(), str.end());
LPWSTR lStr = const_cast<wchar_t*>(wname.c_str());
MessageBox(lStr);
这种方法很好用。但问题是,每次我需要转换时,我必须重写这些语句,并将此片段设置为函数:
LPWSTR convertLPWSTR(std::string &str) {
std::wstring wname(str.begin(), str.end());
return const_cast<wchar_t*>(wname.c_str());
}
/...
String str = "Hello world!";
LPWSTR lStr = convertLPWSTR(str);
MessageBox(lStr);
但是消息框输出错误字符串(如错误字体)
:
任何人都知道如何解决这个问题?谢谢!
答案 0 :(得分:-3)
为什么不使用
CString str = _T("Hello world!") ;