如何为MessageBox连接LPCTSTR? Java中的语法就是这样
LPCTSTR str1 = "String2";
LPCTSTR str2 = "";
LPCTSTR str3 = "String1";
LPCTSTR finalMsg = "";
finalMsg = str1 + str2 + str3;
C ++ / Win32中的语法是什么? 谢谢!
答案 0 :(得分:2)
请勿使用TCHAR
,该代码用于可针对不支持Unicode的Windows版本(即Windows 98)的代码。
使用标准库字符串类来处理内存管理和串联。
std::wstring str1 = L"String2";
std::wstring str2 = L"";
std::wstring str3 = L"String1"
std::wstring finalMsg = str1 + str2 + str3;
MessageBoxW(..., finalMsg.c_str(), ...);
答案 1 :(得分:-1)
使用strcat()
复制旧的C样式字符串。
或更准确地说,_tcscat()
在大多数平台上都可以使用您正在使用的任何字符类型。
请确保预先分配字符串缓冲区,使其足够容纳任何结果。
TCHAR buff[128];
_tcscpy(buff, str1);
_tcscat(buff, str2);
_tcscat(buff, str3);
答案 2 :(得分:-1)
serial = int(serialnumber)
计划B:使用#include <windows.h>
#include <tchar.h>
int main()
{
LPCTSTR str1 = _T("String2");
LPCTSTR str2 = _T("");
LPCTSTR str3 = _T("String1");
LPTSTR finalMsg = new TCHAR[_tcslen(str1) + _tcslen(str2) + _tcslen(str3) + 1];
_tcscpy(finalMsg, str1);
_tcscat(finalMsg, str2);
_tcscat(finalMsg, str3);
MessageBox(nullptr, finalMsg, _T("Message"), MB_OK);
delete[] finalMsg;
}
字符串类:
std
如果不需要支持Windows的仅ANSI版本,则可以完全删除#include <windows.h>
#include <tchar.h>
#include <string>
using tstring = std::basic_string<TCHAR>;
int main()
{
tstring str1 = _T("String2");
tstring str2 = _T("");
tstring str3 = _T("String1");
tstring finalMsg = str1 + str2 + str3;
MessageBox(nullptr, finalMsg.c_str(), _T("Message"), MB_OK);
}
和TCHAR
并使用...TSTR
,这是{{1 }} std::wstring
。