首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么char* 转换成BSTR时,一部分数据丢掉了

2012-03-01 
为什么char* 转换成BSTR时,一部分数据丢掉了,求救char的长度为10k多,为什么?是因为BSTR长度有限还是因为ch

为什么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);

热点排行