天天看點

CString的GetBuffer()主要作用是将字元串的緩沖區長度鎖定,releaseBuffer則是解除鎖定

CString str;
CStringArray array;
GetPrivateProfileString(_T("政策參數"), _T("ROI1"), _T(""), str.GetBuffer(MAX_PATH), MAX_PATH, m_strPathROI);
//CString的GetBuffer()主要作用是将字元串的緩沖區長度鎖定,releaseBuffer則是解除鎖定,使得CString對象在以後的代碼中繼續可以實作長度自适應增長的功能
str.ReleaseBuffer();//千萬不能缺少
int size = splitString(str, ',', array);
if (size != 4)
{
    return FALSE;
}

      

GetBuffer()主要作用是将字元串的緩沖區長度鎖定,releaseBuffer則是解除鎖定,使得CString對象在以後的代碼中繼續可以實作長度自适應增長的功能。

是否需要在GetBufer後面調用ReleaseBuffer(),是根據你的後面的程式是否需要繼續使用該字元串變量,并且是否動态改變其長度而定的。不是什麼好地程式設計習慣,之類的原因。

如果你GetBuffer以後程式自函數就退出,局部變量都不存在了,調用不掉用ReleaseBuffer沒什麼意義了。

對一個CString變量,你可以使用的唯一合法轉換符是LPCTSTR,直接轉換成非常量指針(LPTSTR-[const] char*)是錯誤的。正确的得到一個指向緩沖區的非常量指針的方法是調用GetBuffer()方法。