请问关于GetBuffer和ReleaseBufer的用法,我对它们的参数的意思不是很清楚,本人英语很烂,MSDN上有点看不懂,我发现它们频繁的用在CString和cha*和string之间的转换,不知道什么原理,哪位高手能详细的解释下,谢谢

解决方案 »

  1.   

    对这个问题俺也是不太清楚,一点可以清楚的是releasebuffer释放在getbuffer多申请的空间,getbuffer 之后还得即时releasebuffer,如果使用了函数getbuffersetlength就不存在这个问题了,帮你顶一下。
      

  2.   

    网上有详细的解释,可以自己搜一下。这个函数对就是用来把CString转化为char*的,这儿只告诉你用法:
    CString str;
    ...
    int i=atoi(str.GetBuffer(str.GetLength()));
    str.ReleaseBuffer();
      

  3.   

    把cstring转化为char*cstring   str;
    str="sssv;sdfkljvskl";
    char    buffer[100];
    memset(buffer,0,sizeof(buffer));
    strcpy(buffer,str.GetBuffer(0));这个办法可以
      

  4.   

    还想问一下楼上高手,GetBuffer的参数The minimum size of the character buffer in characters是什么意思,可以设为0吗?
      

  5.   

    CString str; 
    ... 
    int i=atoi(str); 我这样用,
    好像也没有出项过什么问题,
    这样有什么隐患吗
      

  6.   

    就是在Buffer中最小分配的字符数目
    可以设置为0的。
      

  7.   

    get pointer to modifiable buffer at least as long as nMinBufLength
    这句话似乎更容易理解一点
      

  8.   

    CString
    该大写的还是要大写
      

  9.   

    char *GetBuffer(n)当n大于0时,是为CString变量分配一个长度为n的字节数组,返回值是这个数组的地址当n等于0时,返回CString变量本身拥有的字符串数组的头ReleaseBuffer一般用在GetBuffer,因为在调用了GetBuffer后变量本身会给自己上锁,于是所有能改变自身值的函数都不能用(如果Left,Mid),要用ReleaseBuffer解锁