连接LPCSTR变量和文字?

问题描述 投票:0回答:3

我有一个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

我知道如何将其用于带有参数MessageBoxWLPCWSTR。我以前用过这种方式。

    wchar_t waCoord[20];
    wsprintf(waCoord, _T("(%i,%i)"),x , y);
    MessageBox(hWnd, waCoord, _T(" click"), MB_OK);
c++ winapi
3个回答
2
投票

您可以从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);
}

0
投票

std::(string(name)+string(" is X"))

有点奇怪。 std::是一个名称空间限定,仅适用于紧随其后的名称。您不能说std::(X,Y,Z)并将std::应用于所有X,Y和Z。

这个主意很好。 (std::string(name) + std::string(" is X")).c_str()将按预期工作。


0
投票

另一种选择是使用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);
© www.soinside.com 2019 - 2024. All rights reserved.