MFC:无法将std :: string转换为LPWSTR到函数

时间:2016-06-30 09:14:21

标签: c++ mfc

我正在用Visual Studio 2015编写一个MFC项目,字符集配置为“使用Unicode字符集”

我需要从std::string转换为LPWSTR以与LVITEM::pszTextCListCtrl中的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);

但是消息框输出错误字符串(如错误字体)

任何人都知道如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:-3)

为什么不使用

CString str = _T("Hello world!") ;