日期:2014-05-17  浏览次数:20842 次

C++中的代码 在C#中如何表达?小妹在线等
CString strSend ="XXXXXBBBBBBBBBBBBBBBBBB";
int len=senddata(strSend.GetBuffer(strSend.GetLength()),strSend.GetLength());

int CVC6ClientDlg::senddata(char * buf,int num)
{
    char sendbuf[512];
memcpy(sendbuf,buf,num);
    sendbuf[num]='\n';
return SSL_writego(ssl, sendbuf, num+1);
   
}

GetBuffer在C#是如何表达?感谢

------解决方案--------------------
Encoding GetBytes
------解决方案--------------------
一般来说,没有必要 care 什么 c++ 代码。

你应该用c#根据需求来重写这种“三脚猫”的几行代码,不用再去纠结什么c++代码。
------解决方案--------------------
同意sp1234的观点,之所以C++使用GetBuffer,是因为便于在对象生存周期结束的时候释放内存的需要。这本身对于托管程序来说是不需要的。字符串完全可以放在托管堆上,让CLR去管理。
------解决方案--------------------
不同意sp1234的观点,小妹很明显是c#新手,既然人家要解决方法,就应该直接把完整的功能代码发上去,例子见多了,自然也就会用了。
------解决方案--------------------

String strSend ="XXXXXBBBBBBBBBBBBBBBBBB";
byte[] buffer=Encoding.GetEncoding("utf-8").GetBytes(strSend );

------解决方案--------------------
有些 C++ 里面的繁琐代码,比如 copy string 之类的,在 C# 里面一句话就搞定了。主要是 SSL_writego 之类的方法,如果可以重写成 C# 就重写,不能的话,就得用 C# 的 API 去引用 C++ 的这些方法。