C++ 如何将字符串分配到MessageBox C++;?

C++ 如何将字符串分配到MessageBox C++;?,c++,string,netbeans,messagebox,C++,String,Netbeans,Messagebox,你好,这是我的简单代码。我想在消息框中使用字符串。我用谷歌。但我没有好的解决办法。我正在使用netbeans和Mingw #include <windows.h> int main() { MessageBox(NULL, "Hello world","Warning!", MB_ICONEXCLAMATION | MB_OK); } 这样称呼它: MessageBox(NULL, mymessage ,"Warning

你好,这是我的简单代码。我想在消息框中使用字符串。我用谷歌。但我没有好的解决办法。我正在使用netbeans和Mingw

#include <windows.h>
int main()
    {
MessageBox(NULL, "Hello world","Warning!", 
MB_ICONEXCLAMATION | MB_OK);
}
这样称呼它:

MessageBox(NULL, mymessage  ,"Warning!", 
    MB_ICONEXCLAMATION | MB_OK);
我是C++新手。如果你有C++教程,请列出它。请不要添加VisualC++。谷歌总是提供Visual C++解决方案。但这些解决方案并没有解决我的问题。希望你能理解

谢谢你抽出时间

在这种情况下,我的主要任务是分配字符串并为MessageBox调用它。

试试看

MessageBox(NULL, mymessage.c_str()  ,"Warning!", 
    MB_ICONEXCLAMATION | MB_OK);
说明:
MessageBox
的第二个参数应该是
const char*
(如果宏
UNICODE
未定义),而
std::string
不能隐式转换为
const char*
。所以你应该使用
constchar*c_str()const
方法。

试试看

MessageBox(NULL, mymessage.c_str()  ,"Warning!", 
    MB_ICONEXCLAMATION | MB_OK);
说明:
MessageBox
的第二个参数应该是
const char*
(如果宏
UNICODE
未定义),而
std::string
不能隐式转换为
const char*
。因此,您应该使用
const char*c_str()const
方法。

MessageBox获取指向以null结尾的字符串的指针作为输入,因此您需要使用c_str()运算符从字符串本身获取指向该字符串的指针:

MessageBox(NULL, mymessage.c_str(), ...)

MessageBox获取指向以null结尾的字符串的指针作为输入,因此需要使用c_str()运算符从字符串本身获取指向该字符串的指针:

MessageBox(NULL, mymessage.c_str(), ...)

无法在
MessageBox
中使用
std::string
作为标题和/或消息。因为,
MessageBox
接受
LPCWSTR
类型作为其第二和第三个参数。所以,若要在MessageBox中使用字符串,必须使用
std::wstring
。 示例代码:

#包括
#包括
int main()
{
std::wstring value=L“您的消息在这里”;
MessageBox(NULL,value.c_str(),L“Warning”,MB_图标连接| MB_OK);
返回0;
}

您不能在
MessageBox
中使用
std::string
作为标题和/或消息。因为,
MessageBox
接受
LPCWSTR
类型作为其第二和第三个参数。所以,若要在MessageBox中使用字符串,必须使用
std::wstring
。 示例代码:

#包括
#包括
int main()
{
std::wstring value=L“您的消息在这里”;
MessageBox(NULL,value.c_str(),L“Warning”,MB_图标连接| MB_OK);
返回0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
main()
{
字符串mHeader=“Hello!\n\n”;
string mReport=“这是测试一!\n\n”;
MessageBox(NULL,mReport.c_str(),“Waring”,MB_图标连接| MB_OK);
返回0;
}
你好,这是最后的工作代码。谢谢你的支持。没有你的帮助,我无法写作和学习。现在你可以看到这里有两个字符串:mHeader和mReport。我想将这两个字符串添加到我的MessageBox中。但我是怎么做到的?以及告诉我我的代码是否有任何错误

再次感谢你

#包括
#包括
#包括
#包括
使用名称空间std;
main()
{
字符串mHeader=“Hello!\n\n”;
string mReport=“这是测试一!\n\n”;
MessageBox(NULL,mReport.c_str(),“Waring”,MB_图标连接| MB_OK);
返回0;
}
你好,这是最后的工作代码。谢谢你的支持。没有你的帮助,我无法写作和学习。现在你可以看到这里有两个字符串:mHeader和mReport。我想将这两个字符串添加到我的MessageBox中。但我是怎么做到的?以及告诉我我的代码是否有任何错误


再次感谢你

此代码将不起作用!它将抛出以下错误:
错误C2664:无法将参数2从“const char*”转换为“LPCWSTR”
您好,谢谢您的想法。如何将此cnst字符添加到代码中?你能给我看看吗?@mirjallatalalishinski你可以按照Algirdas Preidžius的建议:这个错误意味着宏
UNICODE
已经定义,而
MessageBox
实际上是
MessageBoxW
。要快速解决问题,只需将
MessageBox
替换为
MessageBoxA
@Iz96,正如您所知,
MessageBox
是在
WinUser.h
文件中定义的。如果在该文件中搜索MessageBox,可以看到,
#ifdef UNICODE#define MessageBox MessageBoxW#else#define MessageBox MessageBoxA#endif/!UNICODE
。在代码的这一部分中,禁用了
#else
部分。这意味着,
UNICODE
已经定义。谢谢此代码将不起作用!它将抛出以下错误:
错误C2664:无法将参数2从“const char*”转换为“LPCWSTR”
您好,谢谢您的想法。如何将此cnst字符添加到代码中?你能给我看看吗?@mirjallatalalishinski你可以按照Algirdas Preidžius的建议:这个错误意味着宏
UNICODE
已经定义,而
MessageBox
实际上是
MessageBoxW
。要快速解决问题,只需将
MessageBox
替换为
MessageBoxA
@Iz96,正如您所知,
MessageBox
是在
WinUser.h
文件中定义的。如果在该文件中搜索MessageBox,可以看到,
#ifdef UNICODE#define MessageBox MessageBoxW#else#define MessageBox MessageBoxA#endif/!UNICODE
。在代码的这一部分中,禁用了
#else
部分。这意味着,
UNICODE
已经定义。谢谢不一定。
windows.h
中的所有过程/函数都有ANSI版本和unicode版本。对于
MessageBox
,它们将是:
MessageBoxA
/
MessageBoxW
。然后根据
#ifdef UNICODE
d定义为
MessageBox
的实际名称。并且,查看他的代码,您可以看到未定义
UNICODE
。@Oldmax有什么错误@阿尔及达斯佩雷斯