gpt4 book ai didi

c++ - 没有大小参数的 CString::GetBuffer() 有什么作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:38 26 4
gpt4 key购买 nike

也许我快疯了,但我已经尝试了所有我能想到的搜索组合,但我找不到不带参数的 CString::GetBuffer() 的定义。我查找的每个引用资料都描述了 CString::GetBuffer( int ),其中传入的 int 参数是最大缓冲区长度。 header 中的定义用于 CSimpleStringT::GetBuffer()。这给了我以下链接,它至少承认了无参数版本的存在,但没有提供其行为的描述。 https://msdn.microsoft.com/en-us/library/sddk80xf.aspx#csimplestringt__getbuffer

我正在查看现有的 C++ (Visual Studio) 代码,如果不需要,我不想更改这些代码,但我需要知道 CString::GetBuffer()< 的预期行为。如果有人可以解释它或向我指出一些相关文档,我将不胜感激。

最佳答案

虽然 msdn 文档并没有真正说明没有参数的 GetBuffer 的作用,但 MFC 源代码揭示了答案:

返回( m_pszData );

所以它只是返回一个指向底层字符缓冲区的指针。 (它还会检查内部数据是否共享并首先 fork /复制它)。

代码在atlsimpstr.h中

完整功能:

PXSTR GetBuffer()
{
CStringData* pData = GetData();
if( pData->IsShared() )
{
Fork( pData->nDataLength );
}

return( m_pszData );
}

关于c++ - 没有大小参数的 CString::GetBuffer() 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com