0

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

我有这三种类型的变量:(是的,我的程序使用 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;

错误类似于“无法转换...”和“无法添加两个指针...”我已经尝试了所有内容,或者加号('+')是非法的。是否有任何文本宏可以轻松地将字符串添加在一起或类似的东西?我的研究没有发现任何令人满意的东西。大多数适用于 Borland 的示例,例如 Visual Studio C++ 不提供的 .c_str()。

只要没有添加任何东西,一个变量就可以用于输出:

LPCWSTR message1 = _T(computername1);

但是我怎么说我想用加号运算符和多个字符串加在一起来输出“message1”。

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

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

有什么指点?

4

1 回答 1

2

添加将不起作用。

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

于 2012-08-24T21:25:28.973 回答