读书人

为什么char* 转换成BSTR时一部分数据

发布时间: 2012-03-01 10:25:47 作者: rapoo

为什么char* 转换成BSTR时,一部分数据丢掉了,求救
char的长度为10k多,为什么?是因为BSTR长度有限还是因为char里面包含无效字符导致的?无论我怎么转换就是无法把全部的char 都转换成BSTR,象下面这样转也不行。


LPCSTR pstr;
wchar_t * pstr2;
...

pstr2 = new wchar_t(strlen(pstr));
for(int i=0;i <strlen(pstr);i++)
pstr2[i] = pstr[i];

[解决办法]
呵呵,不能这么搞的,BSTR前端有附加的长度信息,你这样只能修改了其内容,却不能修改其长度信息,导致内部不一致了。

你想利用已有的ANSI string来分配BSTR,应该这样:
wchar_t* ws = new wchar_t[strlen(pstr) + 1];
mbstowcs(ws, pstr, strlen(pstr) + 1);
pstr2 = SysAllocStringLen(ws);

读书人网 >C++

热点推荐