c++ - 没有大小参数的 CString::GetBuffer() 有什么作用?
问题描述
也许我要疯了,但我已经尝试了我能想到的所有搜索组合,但我找不到CString::GetBuffer()
没有参数的定义。我查找的每个参考资料都描述了CString::GetBuffer( int )
,其中int
传入的参数是最大缓冲区长度。标题中的定义是 for CSimpleStringT::GetBuffer()
。这给了我以下链接,它至少承认无参数版本的存在,但没有提供其行为的描述。
https://msdn.microsoft.com/en-us/library/sddk80xf.aspx#csimplestringt__getbuffer
我正在查看现有的 C++ (Visual Studio) 代码,如果不需要,我不想更改,但我需要知道CString::GetBuffer()
. 如果有人可以解释它或向我指出一些关于它的文档,我将不胜感激。
解决方案
尽管 msdn 文档并没有真正说明GetBuffer
没有参数的情况,但 MFC 源代码揭示了答案:
return( m_pszData );
所以它只是返回一个指向底层字符缓冲区的指针。(它还检查内部数据是否共享并首先分叉/复制它)。
代码在 atlsimpstr.h
功能齐全:
PXSTR GetBuffer()
{
CStringData* pData = GetData();
if( pData->IsShared() )
{
Fork( pData->nDataLength );
}
return( m_pszData );
}
推荐阅读
- excel - 试图在 2 张纸之间找到未命中目标的数量
- c - 逻辑运算符 | | 在 C 中
- java - 当 RecyclerView 位于 NestedScrollView 中时,它的性能优势就会被剥夺。有两种方法可以同时使用吗?
- discord - 自我机器人房屋或名称更改
- twitter-bootstrap - 在 Bootstrap 中最小化行宽
- kubernetes - 使用 Minikube kubectl 创建部署时出现未知图像标志
- angular - 在模板驱动表单中禁用 mat-form-field
- r - 使用 R 中的过滤器函数过滤具有多个变量的多个条件
- python - 使用 .join() 将列表值转换为在 python 中面临错误的字符串
- discord - Discord:通过 ID 获取频道返回 undefined / null