CString::GetBuffer函数作用
来源:互联网 发布:中文翻译缅甸语言软件 编辑:程序博客网 时间:2024/06/03 07:48
CString::GetBuffer
LPTSTR GetBuffer( int nMinBufLength );
throw( CMemoryException );
对一个CString变量,你可以使用的唯一合法转换符是LPCTSTR,直接转换成非常量指针(LPTSTR-[const] char*)是错误的。正确的得到一个指向缓冲区的非常量指针的方法是调用GetBuffer()方法。
GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。
CString ::GetBuffer有两个重载版本:
LPTSTR GetBuffer( );
LPTSTR GetBuffer(int nMinBufferLength);
在第二个版本中,当设定的长度小于原字符串长度时,nMinBufLength = nOldLen,该参数会被忽略,不分配内存,指向原CString;当设定的长度大于原字符串本身的长度时就要重新分配(reallocate)一块比较大的空间出来。而调用第一个版本时,和通过传入0来调用第二个版本一样。
是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使用该字符串变量,并且是否动态改变其长度而定的。如果你GetBuffer以后程序自函数就退出,局部变量都不存在了,调用不调用ReleaseBuffer没什么意义了。
最典型的应用就是读取文件:
CFile file;
// FILE_NAME 为实现定义好的文件名称
if(file.Open(FILE_NAME,CFile::modeRead))
{
CString szContent;
int nFileLength = file.GetLength();
file.Read(szContent.GetBuffer(nFileLength),nFileLength);
szContent.ReleaseBuffer();
// 取得文件內容放在szContent中,我们之后可以对其操作
}
还有的例子是使用sendmessage(WM_COPYDATA)进程间通信的时候,发送数据的地址最好getbuffer一下防止被未知线程修改数据
- CString::GetBuffer函数作用
- CString 的GetBuffer函数
- CString::GetBuffer、ReleaseBuffer函数
- CString的GetBuffer函数详解
- Cstring中GetBuffer()方法的主要作用
- Cstring中GetBuffer()方法的主要作用
- CString:Getbuffer和Releasebuffer的作用
- CreateThread函数&&CString::GetBuffer函数
- CString GetBuffer()
- CString类的GetBuffer,ReleaseBuffer 函数
- CString中GetBuffer函数的应用
- VC CString 中 GetBuffer() 函数 使用注意事项
- CString的GetBuffer(0)中的“0”的作用
- CString GetBuffer用法,GetBuffer本质,GetBuffer常见问题
- 精解CString类的GetBuffer,ReleaseBuffer 函数(VC++)
- 精解CString类的GetBuffer,ReleaseBuffer 函数(VC++)
- 精解CString类的GetBuffer,ReleaseBuffer 函数(VC++)
- 精解CString类的GetBuffer,ReleaseBuffer 函数(VC++)
- 【转载】Shell图形化监控网络流量
- Ubuntu安装配置Mysql
- hdu 1698 线段树
- leetcode 二分查找 Search in Rotated Sorted ArrayII
- 最长回文串子串 渣渣版
- CString::GetBuffer函数作用
- ubuntu tomcat7
- POJ2104 归并树
- 【笔记】正则表达式
- Java中的移位操作——Java编程思想笔记
- poj 1743 后缀数组求最长不重叠重复子串
- DP专辑(转)进阶、分类
- ThreadLocal和同步锁机制的对比分析
- POJ1316-Self number