vc中CString对象的GetBuffer 用法小结 cstringarray用法
1.GetBuffer函数说明这个函数是为一个CString对象重新获取其内部字符缓冲区的指针,返回的LPTSTR为非const的,从而允许直接修改CString中的内容。
如果nMinBufLength(最小占用长度) 比当前buffer长度大,那么就调用GetBuffer函数去释放当前的Buffer,用一个被请求的大小去覆盖这个buffer并且重新设定计数器为0,如果在这之前你在这个buffer中调用了LockBuffer,那么你将失去你当前锁定的buffer。
注意事项:如果你使用这个指向由GetBuffer所改变返回的字符串内容,那么在你使用CString其他CString方法之前你必须调用ReleaseBuffer
在调用ReleaseBuffer函数之后GetBuffer中的内容将无效(也就是销毁)
当这个CString被销毁的时候,这个buffer所占用的内存将被自动释放
注意这个: 如果你知道了这个字符串的长度,你不可以直接添加NULL字符了事,当你使用ReleaseBuffer的时候,无论如何,你必须指定最后的字符串的长度,如果你仅仅添加了一个NULL字符结束符给这个字符串,你应该给ReleaseBuffer传递一个-1, 当这个函数结束的时候,_tcslen 将决定这个buffer的长度
GetBuffer(0):意思是将字符串对象原样返回指针,不改变大小
2.使用例子
例子:
// example for CString::GetBuffer
CString s( "abcd" );//定义一个CString s并且初始化为abcd
#ifdef _DEBUG
afxDump << "CString s " << s << "n";
#endif
LPTSTR p = s.GetBuffer( 10 );//定义一个指针指向LPTSTR并接受GetBuffer所返回的地址
lstrcpy( p, _T("Hello") ); // directly access CString buffer//使用Istrcpy将Hello]复制到该buffer中
s.ReleaseBuffer( );//释放buffer
#ifdef _DEBUG
afxDump << "CString s " << s << "n";这时候s="Hello";
#endif
更多阅读
SQL中DISTINCT关键字的用法 linq distinct 用法
Select中DISTINCT关键字的用法?distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段下面先来看
shell中$0,$?,$!等的特殊用法 shell z 用法
变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定
现代诗中标点符号的应用文学讲座 标点符号的正确用法
作者/米粒(文学群专题讲座)一、现代诗中是否使用标点符号要不要使用标点符号,这是只有在现代诗(新诗)中才会出现的一个问题。因为在一般的文学作品中,标点符号的
linux系统中scp命令的用法Permission denied排错二例 cd permission denied
已有 3393 次阅读 2011-05-07 15:53 标签:linuxscpPermissiondeniedlinux系统中scp命令的用法注意:在使用过程中如果出现 -bash: scp: command not found请执行yum install openssh-clientsscp是 secure copy的缩写, scp是linux系统
Android中Toast对象的使用 android 自定义toast
字号:[ 大 中 小 ] 发布日期:2010-1-15 发布者:android浏览次数:1132次Android中Toast对象的使用编号:A3GS_TA20100115003描述:本文讲述了Android中Toast对象的使用。例子:有兴趣的朋友可以在登录后下载本文例子代码!例子效果图: