C++

静态数据成员在类声明中声明,在包含类方法的文件中定义(初始化),初始化时采用作用域操作符::来指出静态成员所属的类。但如果静态成员的类型是整型或枚举类型const,则可以在类声明中初始化。

sprintf_s是sprintf的安全版本,指定缓冲区大小来避免sprintf的溢出风险。

int sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format [, argument] ...);

int sprintf( char *buffer, const char *format [, argument] … );

CString为什么要用GetBuffer和ReleaseBuffer~

因为CString变量是可变长度的,动态分配内存~所以~

对一个CString变量,你可以使用的唯一合法转换符是LPCTSTR,直接转换成非常量指针(LPTSTR-[const] char*)是错误的。正确的得到一个指向缓冲区的非常量指针的方法是调用GetBuffer()方法。

GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。

CString ::GetBuffer有两个重载版本:

LPTSTR GetBuffer( );LPTSTR GetBuffer(int nMinBufferLength);

在第二个版本中,当设定的长度小于原字符串长度时,nMinBufLength = nOldLen,该参数会被忽略,不分配内存,指向原CString;当设定的长度大于原字符串本身的长度时就要重新分配(reallocate)一块比较大的空间出来。而调用第一个版本时,应如通过传入0来调用第二个版本一样。

在ReleaseBuffer之前调用GetLength方法是不对的~

原文链接: https://www.cnblogs.com/huqian23456/archive/2011/07/14/2106846.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/28625

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午6:07
下一篇 2023年2月8日 上午6:07

相关推荐