佚名通过本文主要向大家介绍了bstr,bstr t,bstr是什么类型,bstr转cstring,vt bstr等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 问一个关于_bstr_t的问题
描述:
解决方案1:
描述:
_bstr_t value="";
value="李四";
char c[10]="";
memcpy(c,(char *)value,8);
这样拷贝到c中的字符为0xc0,0xee,0xcb,0xc4,0x00,0xcd,0xfd,0xfd,0x00,0x00
如果直接这样memcpy(c,"李四",8);
则拷贝到c中的字符为
0xc0,0xee,0xcb,0xc4,0x00,0x00,0x00,0x00,0x00,0x00
为什么不一致?虽然第一个到第5个字符已经结束了,如何才能将一个
_bstr_t拷贝到char数组里,而没有后面的垃圾字符?
解决方案1:
_bstr_t应该是把汉字和英文字符一样看待的。
这样你就可以直接把长度乘2。
试一下strlen,将参数强制转型一下。
其实上面两种Copy的方式是不一样的
value是一个经过转换后的char *指针,它指的区域<后四个字节>的值是不可预知的,因而其 后四个字节的值也是不定的
而第二种方式赋值,它只将"李四"这个字符串赋给c,而剩余的字节,系统会自动用0来填充
你用strcpy试一下
这样:
strcpy(c,(LPCTSTR)value);