现在想实现Cstring.Mid()的方法不做数据类型转换自己手工写个类似Mid(iStart,iEnd)的方法能否提供下源码给参考下,谢谢了!

解决方案 »

  1.   

    自己写个循环不就行了?
    BSTR 是宽字符,前面加个长度而已
      

  2.   

    一种比较简单的方式:
    memcpy(result,ori + iStart,(iEnd - iStart) * 2);
    result 为结果,需要提前分配内存
    ori 为源.
      

  3.   

    SysAllocString分配空间,然后用wcscpy拷贝字符串
      

  4.   

    能否写段代码,给参考下,刚介入ATL模式,还不熟悉,谢谢了。
      

  5.   

    我写好了
    CComBSTREx CComBSTREx::Mid(long f,long s)
    {
    int startpoint=f; 
    int endpoint=s; wchar_t *buf1=new WCHAR[m_ComBSTR.Length()+1]; 

    if(m_ComBSTR.Length()>0)
    {
    wcsncpy(buf1,m_ComBSTR+startpoint,endpoint); 
    buf1[endpoint] = '\0';
    } return buf1; 
    }