连接 LPCSTR 变量和文字?
Concatenating LPCSTR variable and literal?
我有一个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
.
我知道如何将其用于需要LPCWSTR
论证MessageBoxW
. 我以前用过这种方式。
wchar_t waCoord[20];
wsprintf(waCoord, _T("(%i,%i)"),x , y);
MessageBox(hWnd, waCoord, _T(" click"), MB_OK);
您可以从LPCSTR
创建string
,然后向其添加" 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);
}
最简单的选择是将LPCSTR
转换为std::string
,然后您可以根据需要附加到它,例如:
#include <string>
LPCSTR name = ...;
MessageBoxA(NULL, (std::string(name) + " is X").c_str(), "pop up", MB_OK);
另一种选择是使用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);
std::(string(name)+string(" is X"))
这有点奇怪。std::
是命名空间限定,它仅适用于紧随其后的名称。你不能说std::(X,Y,Z)
,就让std::
适用于所有X,Y和Z。
这个想法本身是好的。(std::string(name) + std::string(" is X")).c_str()
将按预期工作。
相关文章:
- 连接 LPCSTR 变量和文字?
- 如何使用C++中不是文字的变量在数字中显示单引号和两个引号?假设 6'2" 英尺
- 如何在 C 宏中将变量字符串与文字字符串连接起来?
- 如何使变量成为文字字符串
- 文字符号和字符串变量之间的串联然后返回常量字符*
- 程序读取文字或解释变量所需的时间是否更少
- 如何将数值变量与计时文字结合在一起
- 在C++中运行 CMD 行 使用变量(不是字符串文字)作为参数
- 有什么方法可以将字符串文字u8与变量一起使用吗
- 为什么两个字符串文字可以连接,而不能连接两个字符串变量
- clang vs gcc CRTP:constexpr 变量不能有非文字类型
- 是否有一种方法可以将变量列表传递给#Define指令,并导致其通过文字值替换字符串值
- constexpr函数体c++14中可以有非文字类型的定义变量吗
- 用文字初始化参考成员变量
- 在C++中对浮点变量执行算术时,是否始终需要使用浮点数文字
- 我们可以分配一个无符号的int变量,0xFULL文字吗
- 当用文字替换变量用法时,程序速度减慢了很多,为什么
- 如何将整数变量连接到字符串文字
- 使用auto声明变量,并使用原始文字定义的行为进行初始化
- 符号扩展对文字与变量