0

我在 C++ 中试过这个:

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

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

4

3 回答 3

4

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

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

std::string teststring = "hello";
MessageBox(NULL,teststring.c_str(),NULL, NULL);
于 2013-09-19T12:02:31.157 回答
1

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

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

std::string teststring = "hello";
MessageBox(NULL, teststring.c_str(), NULL, NULL);
于 2013-09-19T12:03:35.650 回答
0

试试这个怎么样?

std::string teststring = "hello";
LPCSTR tmp = teststring .c_str()
MessageBox(NULL,tmp ,NULL, NULL);
于 2013-09-19T12:03:04.143 回答