当我们利用CString类定义的变量存储字符串时,往往会因为一些需要调用的其他函数形参类型不一致导致错误,例如需要用GetCurrentDirectoryA函数读取当前工作目录时,若第二个参数直接用CString定义的变量,会报“不存在从 "CString" 到 "LPSTR" 的适当转换函数”错误,因此可以利用CString类函数GetBuffer()来获取函数GetCurrentDirectoryA返回的目录字符串,例如:
GetCurrentDirectoryA(MAX_PATH, FilePath.GetBuffer(MAX_PATH));
由于GetBuffer动态分配内存给FilePath变量,并会将变量FilePath锁住,因此需要及时利用ReleaseBuffer()函数释放申请的内存,CString类便会将获取到的数据拷贝到类里面,这样便可以正常使用CString类。
注意:使用GetBuffe(n)时必须给形参添加获取数组大小,因为若没给GetBuffe添加参数,会默认为0,当调用ReleaseBuffer()函数后,CString类的数据也会被释放掉,即CString类变量根本没有获取到真正的字符串数字,因此切记要给GetBuffe添加大于或等于所获取的字符串的大小参数。