关于字符串参数传递问题
有一C++类TB001:
它里面有一方法:
int InsertRecord1(int id, char* str1, char* str2);
C#函数要调用它!代码如下:
TB001 tb = new TB001();
int id = 1;
string str1 = "TMD ";
byte[] buf = System.Text.Encoding.ASCII.GetBytes(str1);
sbyte[] sbuf = new SByte[buf.Length];
for (int i = 0; i < buf.Length; i++)
{
sbuf[i] = (sbyte)buf[i];
}
tb.InsertRecord1(id, ref sbuf[0], ref sbuf[0]); //结果这一行这里失败:
Error 1 The best overloaded method match for 'Test.TB001.InsertRecord1(int, sbyte*, sbyte*) ' has some invalid arguments D:\ExtremeDB\Test2\TestApp\Program.cs 115 13 TestApp
Error 2 Argument '2 ': cannot convert from 'ref sbyte ' to 'sbyte* ' D:\ExtremeDB\Test2\TestApp\Program.cs 115 38 TestApp
请问我应该怎么写?
------解决方案--------------------帮顶一下.. 看到沙发... 不顶对不起自己
虽然不会..
------解决方案--------------------用StringBuilder
------解决方案--------------------用StringBuilder代替你的数组,这都不会?
------解决方案--------------------byte[] buf = System.Text.Encoding.ASCII.GetBytes(str1);
sbyte[] sbuf = new SByte[buf.Length];
改为:
StringBuilder buf=new StringBuilder(system.Text.Encoding.ASCII.GetBytes(str1);
StringBuilder sbuf=new StringBuilder(buf.Length.toString());
for (int i = 0; i < buf.Length; i++)
{
sbuf[i] = (sbyte)buf[i];
}
改为:
for(int i=0;i <buf.length;i++)
{
sbuf.append(buf[i]);
}
//记不太清楚了,自己试一下就知道了,