我不想做内存的大搬家,所以不希望用string strXXX = (const char*)pStringBuf;
这种形式来初始化。
我希望将pStringBuf那个地方直接看作一个string对象来用,不知道有无函数支持这样的指定。谢谢!

解决方案 »

  1.   

    你想做什么?为什么要实现类似“string strXXX = (const char*)pStringBuf;”的转换?直接用pStringBuf->Function(..)不就可以吗
      

  2.   


    要先将那块内存变成stirng对象才行,
    也就是构建一个新的对象,用内存地址和大小做参数
      

  3.   

    to fallhunter(不乖):是啊,请你告诉我哪个构造函数是可以用内存地址和大小做参数的?thx
      

  4.   

    若一开始那块内存用p = new string得到的,那就不用转换,直接p->FucName(..)就可以。如果其他的方式,就得转换了
      

  5.   

    强制类型转换不适合内存表示不同的场合,所以只有你确定指定地址的内存布局和string相同的时候才可以访问。类的内存表示包含虚函数表和成员列表两部分。
    通常,只有派生类和基类的类型不同而和基类的内存表示相同,所以派生类指针可以安全地转化为基类指针。一些不安全的类型转换也可能是可行的,只要访问的部分成员内存布局一致并且独立于其它成员就可以了。
    一些字符串操作封装类内部维护一个引用计数来避免内存的频繁复制。如果对标准字符串的内存复制成为了程序的瓶颈,那么可以使用这样的类来提高性能。
      

  6.   

    基类,子类等对象指针用dynamic_cast等来进行类型转换