错误C2664:'MessageBoxA':无法将参数2从'std :: string'转换为'LPCSTR'

时间:2013-09-19 11:59:08

标签: c++ winapi

我在c ++中试过这个:

std::string teststring = "hello";
MessageBox(NULL,teststring,NULL, NULL);

错误C2664:'MessageBoxA':无法将参数2从'std :: string'转换为'LPCSTR'

3 个答案:

答案 0 :(得分:4)

首先,它看起来像Visual C ++所以正确标记它。

您可以在std :: string上使用c_str()方法获取内部缓冲区,因此您的代码变为:

std::string teststring = "hello";
MessageBox(NULL,teststring.c_str(),NULL, NULL);

答案 1 :(得分:1)

MessageBox的第二个和第三个参数需要 C字符串

要从 std :: string 获取C字符串,请调用c_str(),因此调用它的正确方法是:

std::string teststring = "hello";
MessageBox(NULL, teststring.c_str(), NULL, NULL);

答案 2 :(得分:0)

尝试这个怎么样?

std::string teststring = "hello";
LPCSTR tmp = teststring .c_str()
MessageBox(NULL,tmp ,NULL, NULL);