那具nMinBufLength 到底有什么用?

解决方案 »

  1.   

    载自msdn
    nMinBufLength
    The minimum size of the character buffer in characters. This value does not include space for a null terminator可以说是要取得字符个数。
      

  2.   

    GetBuffer是将CString 保存的字符串作为一个LPTSTR的指针形式返回出来,需要指定这个Buffer的大小,里面的参数是给定最小的Buffer大小,
    如果要你使用了这个指针,而且以后还要用这个CString,最好用ReleaseBuffer来释放它。如果不用,可以不使用ReleaseBuffer.在该CString失效时,CString将自动摧毁它。
      

  3.   

    GetBuffer  的内时会在内存中分配一个内存空间,这个空间的大小就是你设定的
    nMinBufLength 的长度,然后在其中填入对应的字符串,生成一个字符串的内存中存放的 char szChar[nMinBufLength]
    当你完成了对这个内存空间的使用,必须再用 ReleaseBufer 来释放
      

  4.   

    TMD 今天加班,我也来抢点分
      

  5.   

    据MSDN的意思是BUFFER的最小值呀。不过我试过str.getbuffer(0),都可以正常使用呀。为什么?
      

  6.   


          CString str("abcd");        CString test = str;        ....        char* p = str.GetBuffer(20); str.GetBuffer(20)后,str的分配长度为20,即指针p它所指向的buffer只有20字节长,给它赋值时,切不可超过,否则灾难离你不远了;如果指定长度小于原来串长度,如GetBuffer(1),实际上它会分配4个字节长度(即原来串长度);
      

  7.   

    呵呵,好像是进行CString 到char[]转换
      

  8.   

    这是一个例子,可能对你有启发。
    CString str="123.567";
    float lfTemp;
    lfTemp=(float)atof(str.GetBuffer(str.GetLength()));