无法从字符串转换为LPCTSTR

时间:2012-10-03 11:51:46

标签: c++ string mfc

我试图将一些文本放在静态文本小部件中,如下所示:

m_StartupTime.SetWindowText(someStringVariable);

并收到错误:

  

'CWnd :: SetWindowTextA':无法将参数1从'std :: string'转换为'LPCTSTR'

我尝试使用c.str()方法,但是当我这样做时,程序编译得很好,但在运行时崩溃,抛出错误:

The error

所以我正在弄清楚问题是否与转换有关,还是除此之外的任何其他内容?

使用CString无法解决问题,我尝试从Unicode字符集切换到Multi-Byte,但没有成功。哦,我在MFC开发。

编辑:找到解决方案!我使用了CString类。

string a = "smth";
CString str(a.c_str());

2 个答案:

答案 0 :(得分:5)

Assert对话框显示断言发生的位置:file winocc.cpp,第246行。

查看代码,这是该文件中的行:

ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

看来你的断言与字符串无关,但控件不存在(还有?),即控制窗口无效或不存在。

答案 1 :(得分:1)

CA2T str( someStringVariable.c_str() );
m_StartupTime.SetWindowText(str);

假设someStringVariable具有std :: string类型。包括AtlBase.h来编译它。