C++ Windows字符和带有Console::WriteLine()的字符类型和字符串

C++ Windows字符和带有Console::WriteLine()的字符类型和字符串,c++,.net,C++,.net,我正在编写一个Winsock应用程序,有一次我需要生成tcp消息,这是一个网页的http get请求 char clientmessage[] = "GET / HTTP/1.1\r\n\r\n"; Console::WriteLine(clientmessage); 当我尝试使用Console::WriteLine()方法打印消息时,它会打印True。我认为这可能是该方法的一个问题,也许我需要像本教程中那样使用put()。 非常感谢您的帮助。它似乎隐式地将非托管指针转换为System.Bo

我正在编写一个Winsock应用程序,有一次我需要生成tcp消息,这是一个网页的http get请求

char clientmessage[] = "GET / HTTP/1.1\r\n\r\n";
Console::WriteLine(clientmessage);
当我尝试使用
Console::WriteLine()
方法打印消息时,它会打印
True
。我认为这可能是该方法的一个问题,也许我需要像本教程中那样使用
put()


非常感谢您的帮助。

它似乎隐式地将非托管指针转换为
System.Boolean
。 为了使用.NETAPI,您需要封送参数。在这种情况下,您需要将
clientmessage
封送到
System::String^
中。您可以使用
System::Runtime::InteropServices::Marshal::PtrToStringAnsi()
方法执行此操作

char clientmessage[] = "GET / HTTP/1.1\r\n\r\n";
System::String^ str = System::Runtime::InteropServices::Marshal::PtrToStringAnsi(static_cast<System::IntPtr>(clientmessage));
Console::WriteLine(str);
char-clientmessage[]=“GET/HTTP/1.1\r\n\r\n”;
System::String ^str=System::Runtime::InteropServices::Marshal::PtrToStringAnsi(static_cast(clientmessage));
控制台:WriteLine(str);

这个调用是写真的还是其他的?如果你想使用托管C++(I.E),尤其是.NET函数和类,你也需要使用.NET类型。是的,在运行时控制台上打印“true”,而不是我想要的确切字符串。我使用“代码> char []的原因
type而不是
String^
是因为WinSock api
int send(SOCKET,const char*,int,int)
。或者更好的是:
msclr::interop::marshal_as(clientmessage)
(带有
#include
),它是C++/CLI中的