在Visual C++中使用MessageBoxW来输出添加在一起的多个字符串

Use of MessageBoxW in Visual C++ to output multiple strings which are added together

本文关键字:加在一起 字符串 输出 C++ Visual MessageBoxW      更新时间:2023-10-16

如何在LPCWSTR中输出不同变量的混合以在MessageBoxW中显示?我正在使用Visual C++2008学习版,我是一个非常初学者。我的问题是在字符串中添加不同的变量。它基本上总是说:不能添加两个指针。为什么我不能像所有其他编程语言一样,将两个字符串或一个字符串和一个整数与正则"+"号相加?我使用了谷歌,找到了字符串流,但这对我来说并不奏效,所以请不要再向我建议了。

我有三种类型的变量:(是的,我的程序是用unicode运行的,必须是这样!我已经在标题中定义了unicode。)

wchar_t username[255];
wchar_t windir1[MAX_PATH];
wchar_t computername1[255];

然后我的MessageBox有一个变量:

LPCWSTR message1;

我有我的MessageBox的代码:

MessageBox(NULL, message1, L"Info", MB_OK);

现在我该如何将这三个变量加在一起输出。我的以下代码不起作用:

message1 = "Computername: " + computername1 + "n" + "Username: " + username1 + "n" + "Windows Directory: " + windir1;

错误类似于"无法转换…"answers"无法添加两个指针…",我已经尝试了所有操作,或者加号('+')是非法的。是否有任何文本宏可以轻松地将字符串添加到一起或类似的内容?我在研究中没有发现什么令人满意的东西。Borland的大多数例子都像.c_str()在Visual Studio C++中不可用。

只要不添加任何内容,一个变量就可以用于输出:

LPCWSTR message1 = _T(computername1);

但是我说我想用加号运算符和多个字符串加在一起发出"message1"。

这个构造已经不起作用了,它说:不能添加两个指针

LPCWSTR message1 = _T(computername1) + _T("My Test String");

什么指针?

添加将不起作用。

您必须分配内存并将字符串复制到其他位置。一个好的方法是wsprintf,或者一个支持加法的C++类std::wstring。但是,最好避免使用宽字符(UTF-16),并使用常规std::字符串进行添加。将它们传递给带有boost::nowide的MessageBoxW()。有关更多详细信息,请参阅utf8everywhere.org。