连接 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
。
如何连接 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
。