请教stringbuilder如何直接转到char[],谢谢
不通过ToString().ToCharArray();因为我的程序只要用到string就会无故退出,现在考虑改用char试下 --------------------编程问答--------------------
StringBuilder sb = new StringBuilder ( "Hello World" );
char[] toChar = new char[sb.Length];
for (int i = 0; i < sb.Length;i++ )
{
toChar[i] = sb[i];
}
新学习的,还没学到SB的内容,不过查了下MSDN,好像和STRING差不多,应该可行。 --------------------编程问答-------------------- 你用byte[]获取返回值吧 --------------------编程问答-------------------- 因为我的程序只要用到string就会无故退出
那你应该检查一下你用到string的那段代码,没有无缘无故的退出的 --------------------编程问答-------------------- 贴出代码
怎么使用的 --------------------编程问答--------------------
char[] toChar=newchar[sb.Length];
sb.length + 1~ --------------------编程问答-------------------- 贴出你的DLL原型函数来,核对封送时选用的数据类型是否正确。 --------------------编程问答-------------------- 代码:
原形:
[DllImport("Test.dll")]
public static extern int gettext(StringBuilder s);
调用:
StringBuilder s = new StringBuilder(1024 * 8);
string text="";
for (int k = 0; k < 5500; k++)
{
gettext(s);
text = s.ToString() + text;
...
Thread.Sleep(55);
}
当循环进行到一定数值,出现System.ExecutionEngineException、编译器直接崩溃之类的情况都出现过,很不稳定,奇怪的是如果不用F5调试,直接走exe却可用,所以怀疑是否是string的问题 --------------------编程问答-------------------- [DllImport("Test.dll")]
public static extern int gettext(StringBuilder s);
Test.dll 是用什么语言(如VC,C++等)写的。 它在开发语中的函数原型是什么? --------------------编程问答--------------------
[DllImport("Test.dll")]
public static extern int gettext(StringBuilder s);
//调用:
StringBuilder s = null ;
string text="";
for (int k = 0; k < 5500; k++)
{
s = new StringBuilder(1024 * 8);
gettext(s);
text = s.ToString() + text;
...
Thread.Sleep(55);
}
s = new StringBuilder(1024 * 8);
放置到循环中,因为gettext(s)会改变s的长度的,会引发不预期的错误
比如上一次循环 s长度为1000,而此次gettext(s)需要申请超过1000的长度就会引发不预期的错误
之前调用WIN32 API的时候碰到过,个人所见,楼主可以尝试看看.
补充:.NET技术 , C#