连接 MessageBox 的 LPCTSTR

Concatenate LPCTSTR for MessageBox

如何连接 MessageBox 的 LPCTSTR? Java 中的语法是这样的

LPCTSTR str1 = "String2";
LPCTSTR str2 = "";
LPCTSTR str3 = "String1";
LPCTSTR finalMsg = "";

finalMsg = str1 + str2 + str3;

C++/Win32 的语法是什么? 谢谢!

不要使用 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(), ...);

使用strcat()复制旧的 C 风格字符串。

或者更准确地说 _tcscat() 在大多数平台上都可以使用您正在使用的任何字符类型。

一定要预先分配您的字符串缓冲区,使其足够大以容纳任何结果。

TCHAR buff[128];

_tcscpy(buff, str1);
_tcscat(buff, str2);
_tcscat(buff, str3);
#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;
}

B 计划:使用 std 字符串 类:

#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);
}

如果您不需要支持 Windows 的纯 ANSI 版本,您可以完全删除 TCHAR...TSTR,并使用 std::wstring,这是一个std::basic_string 的模板特化用于 wchar_t