可能是这么简单的修复,但我似乎无法弄清楚问题是什么。 第二行是问题所在,我做错了什么?
System::String^ userinfo = DownloadHTMLPage("http://xat.com/web_gear/chat/auser3.php");
String^ str2 = gcnew String(userinfo.c_str());
答案 0 :(得分:3)
userInfo
是一个指针,因此您应该将该行写为
System::String^ str2 = gcnew System::String(userinfo->c_str());
答案 1 :(得分:0)
System::String
和String
是同一个类。由于.Net字符串是不可变的,因此您无需使用gcnew
创建另一个字符串,您可以直接使用userinfo
。
String^ userinfo = DownloadHTMLPage("http://xat.com/web_gear/chat/auser3.php");
// Use userinfo in your code, or...
String^ str2 = userinfo;
基于对其他答案的评论,看起来你得到了C ++字符串和.Net字符串混淆。 他们不是同一个班级!
要从一个转换为另一个,请使用marshal_as
,如下所示:
#include <marshal_cppstd.h>
String^ managed = "foo";
std::string unmanagedNarrow = marshal_as<std::string>(managed);
std::wstring unmanagedWide = marshal_as<std::wstring>(managed);
String^ managed2 = marshal_as<String^>(unmanagedNarrow);
String^ managed3 = marshal_as<String^>(unmanagedWide);