你好这是我的简单代码。我想在该MessageBox中使用String。我用谷歌。但我没有好的解决方案。我正在使用netbeans和Mingw。
#include <windows.h>
int main()
{
MessageBox(NULL, "Hello world","Warning!",
MB_ICONEXCLAMATION | MB_OK);
}
现在,您可以在该消息框中看到“Hello world”。我想将其指定为字符串。这样的事情。
String mymessage = "Hello world";
并将其称为:
MessageBox(NULL, mymessage ,"Warning!",
MB_ICONEXCLAMATION | MB_OK);
我是C ++的新手。如果您有C ++教程,请列出它。请不要添加Visual C ++。谷歌总是提供Visual C ++解决方案。但那解决方案并没有解决我的问题。希望你能理解。
感谢您的时间。
在这种情况下,我的主要任务是分配String并为MessageBox调用它。
答案 0 :(得分:1)
尝试
MessageBox(NULL, mymessage.c_str() ,"Warning!",
MB_ICONEXCLAMATION | MB_OK);
说明:
MessageBox
的第二个参数应为const char*
(如果未定义宏UNICODE
),则std::string
无法隐式转换为const char*
。所以你应该使用const char* c_str() const
方法。
答案 1 :(得分:1)
MessageBox获取一个指向以null结尾的字符串作为输入的指针,因此您需要使用c_str()运算符从字符串本身获取指向字符串的指针:
MessageBox(NULL, mymessage.c_str(), ...)
答案 2 :(得分:0)
您无法在std::string
中使用MessageBox
作为标题和/或消息。因为,MessageBox
接受LPCWSTR
类型作为其第二和第三参数。因此,如果要在MessageBox中使用 string ,则必须使用std::wstring
。
示例代码:
#include <Windows.h>
#include <iostream>
int main()
{
std::wstring value = L"Your message goes here";
MessageBox(NULL, value.c_str(), L"Warning", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
答案 3 :(得分:0)
#include <windows.h>
#include <string>
#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
string mHeader ="Hello! \n \n";
string mReport ="This is test one! \n \n";
MessageBox(NULL, mReport.c_str(), "Waring", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
你好这是最后工作的代码。感谢您的支持。没有你的帮助,我无法写作和学习这一点。所以现在你可以看到这里有两个字符串:mHeader和mReport。我想将这两个String添加到我的MessageBox中。但我怎么做到这一点?除了告诉我代码中是否有任何错误。
再次感谢你。