string转换为BSTR后的遍历
Marshal类对于托管和非托管环境的交互式十分重要的,下面是类型string转换为BSTR后的字符串遍历的示例代码:
1 static void Main(string[] args)
2 {
3 string str = "Hello world";
4 IntPtr bstr = Marshal.StringToBSTR(str);
5 IntPtr p = bstr;
6 char * c;
7 while (p != (IntPtr)((long)bstr + sizeof(char) * str.Length))
8 {
9 c = (char*)p;
10 Console.WriteLine(*c);
11 p = (IntPtr)((long)p + sizeof(char));
12 }
13 Marshal.FreeBSTR(bstr);
14 }
2 {
3 string str = "Hello world";
4 IntPtr bstr = Marshal.StringToBSTR(str);
5 IntPtr p = bstr;
6 char * c;
7 while (p != (IntPtr)((long)bstr + sizeof(char) * str.Length))
8 {
9 c = (char*)p;
10 Console.WriteLine(*c);
11 p = (IntPtr)((long)p + sizeof(char));
12 }
13 Marshal.FreeBSTR(bstr);
14 }