在vb里:
Dim st As New ADODB.Stream
...改变st内容
Len(st.ReadText)  '''' 结果是797,是正确结果在vc里:
ADODB::_StreamPtr pStm;
pStm.CreateInstance(__uuidof(ADODB::Stream));
...改变pStm内容,内容与VB里完全一样
_bstr_t bstr = pStm->ReadText(adReadAll);
bstr.length()    //// 结果是261640为什么?VC下如何解决该问题?

解决方案 »

  1.   

    int ilen = strlen((char *)bstr);
      

  2.   

    int ilen = strlen((char *)bstr);
    得到:265510
    我已经尝试:
    1、BSTR bstr = NULL;
       pStm->raw_ReadText(adReadAll, &bstr); //261640
    2、CComBSTR bstr((BSTR)pStm->ReadText(adReadAll)); //结果也是261640
    3、用LPCTSTR, wchar_t*,char *, CString, ConvertBSTRToString()等进行相关转换,
       都得不到正确结果。
    问题可能出现在ReadText返回的String(VB)本身有某些问题?
      

  3.   

    VB和COM中字符串格式是BSTR型的,在VC中需要转化为char*等类型,使用相应的转换函数或宏,如果转化之后仍然不正确,那估计就是VB中的程序问题了