在 Visual C++ 中使用 MessageBoxW 输出多个相加的字符串
Posted
技术标签:
【中文标题】在 Visual C++ 中使用 MessageBoxW 输出多个相加的字符串【英文标题】:Use of MessageBoxW in Visual C++ to output multiple strings which are added together 【发布时间】:2012-08-24 21:21:41 【问题描述】:如何在 LPCWSTR 中输出混合的不同变量以将其显示在 MessageBoxW 中? 我正在使用 Visual C++ 2008 Express,我是一个非常初学者。我的问题是将不同的变量添加到字符串中。它基本上总是说:不能添加两个指针。为什么我不能像在所有其他编程语言中一样将两个字符串或一个字符串和一个整数与常规“+”号相加? 我用谷歌找到了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;
错误类似于“无法转换...”和“无法添加两个指针...”我已经尝试了所有方法,或者加号 ('+') 是非法的。 是否有任何文本宏可以轻松地将字符串添加在一起或类似的东西? 我的研究没有发现任何令人满意的东西。大多数像 .c_str() 这样的 Borland 示例 不适用于 Visual Studio C++。
只要没有添加任何东西,一个变量就可以用于输出:
LPCWSTR message1 = _T(computername1);
但我怎么说我想用加号运算符和多个字符串加在一起发出“message1”。
这个结构已经不起作用了,它说:不能添加两个指针!
LPCWSTR message1 = _T(computername1) + _T("My Test String");
什么指针?
【问题讨论】:
希望您知道LPCWSTR
是“指向字符(宽)字符串的长指针”。你可能应该看看StringCchCat和wstrcat,提供了很多字符串操作函数。
这些链接都不是仅适用于 2012 年。事实上,第一个专门链接到 2008 版本的文档。不过,您的浏览器偏好设置可能设置为 2012。
【参考方案1】:
添加将不起作用。
您必须分配内存并将您的字符串复制到别处。一个好方法是 wsprintf,或支持加法的 C++ 类 std::wstring。但是,最好避免使用宽字符 (UTF-16) 并使用常规 std::string 进行添加。使用 boost::nowide 将它们传递给 MessageBoxW()。更多详情,请参见 utf8everywhere.org。
【讨论】:
wstring message2 = wstring(computername1) + "123"以上是关于在 Visual C++ 中使用 MessageBoxW 输出多个相加的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual C++ 2010 中使用 C++ 库 [重复]
在 Visual Studio 2017 中使用 64 位 Visual C++ 工具集
为啥我们在 Visual Studio 2013 中引用 C++ 项目?
在 Visual C++ 2005 中开发的 Visual C++ 项目 - 在 Visual C++ 2010 中,打开菜单时调试断言失败,但发布模式有效,如何解决?