我有一个LPCSTR
变量name
,我想在MessageBoxA(NULL,name,"pop up",MB_OK);
中使用它我希望名称保留值name+" is X"
。例如,名称的值为John
,因此我希望消息框上的输出为“ John is X"
”。谁能帮我这个?
我尝试使用std::(string(name)+string(" is X")).c_str();
因为我正在使用MessageBoxA
,并且需要连接LPCSTR
。
我知道如何将其用于带有参数MessageBoxW
的LPCWSTR
。我以前用过这种方式。
wchar_t waCoord[20];
wsprintf(waCoord, _T("(%i,%i)"),x , y);
MessageBox(hWnd, waCoord, _T(" click"), MB_OK);
您可以从string
创建一个LPCSTR
,然后向其添加" is X"
。
这里有一个示例,将结果作为标题和文本一起放入MessageBoxA
:
#include <string>
void makebox(LPCSTR name) {
std::string res(name);
res += " is X";
::MessageBoxA(nullptr, res.c_str(), res.c_str(), MB_OK);
}
std::(string(name)+string(" is X"))
有点奇怪。 std::
是一个名称空间限定,仅适用于紧随其后的名称。您不能说std::(X,Y,Z)
并将std::
应用于所有X,Y和Z。
这个主意很好。 (std::string(name) + std::string(" is X")).c_str()
将按预期工作。
另一种选择是使用std::ostringstream
,例如:
#include <string>
#include <sstream>
LPCSTR name = ...;
std::ostringstream oss;
oss << name << " is X";
MessageBoxA(NULL, oss.str().c_str(), "pop up", MB_OK);