使用Console :: WriteLine()的Windows char和Char类型和字符串

时间:2016-01-31 10:55:46

标签: c++ .net

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

char clientmessage[] = "GET / HTTP/1.1\r\n\r\n";
Console::WriteLine(clientmessage);

当我尝试打印使用Console::WriteLine()方法的邮件时,会打印True。我认为这可能是该方法的一个问题,也许我需要像本教程中那样使用puts()http://www.binarytides.com/winsock-socket-programming-tutorial/

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

似乎隐式将非托管指针转换为System.Boolean。 要使用.NET API,您需要编组参数。在这种情况下,您需要将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);