CString的getbuffer releasebuffer我觉得还挺好用的,传入时不需要知道长度std::string有没有类似的函数?CString str;
some_function_change_the_string(str.GetBuffer(0) );
str.ReleaseBuffer(0);

解决方案 »

  1.   

    你可以通过allocator来访问到string的内存:
    #include <string>
    using namespace std;
    typedef basic_string<TCHAR> tstring;...
    tstring str(_T("BBB"));
    tstring::allocator_type tch = str.get_allocator();
    tstring::pointer pBuff = tch.address(*(str.begin()));
    pBuff[1] = _T('A');
    结果:
    str为"BAB"
      

  2.   

    c_str()肯定是不行,因为它返回的是const
    我来看看allotator
      

  3.   

    可以直接用pbuff=(char*)str[0]
      

  4.   

    错了是可以直接用pbuff=(char*)&str[0]