CString::GetbufferSetLength 和 CString::GetBuffer 之间的区别

问题描述 投票:0回答:1

我想知道

GetbufferSetLength(some_size)
GetBuffer(some_size)
之间到底有什么区别。

文档对我来说不是很清楚,对我来说,这两个函数听起来几乎都做或多或少相同的事情。

这是我的用例:

CStringA foo;
char *p = foo.GetBufferSetLength(somelength);

// fill the buffer p with exactly somelength (non null) chars
FillCharBufferWithStuff(p, somelength);

foo.ReleaseBuffer(somelength);  // or should I rather use 
                                // ReleaseBufferSetLength(somelength) ?

// now foo contains the somelength characters provided by FillCharBufferWithStuff

如果我使用

GetBuffer
而不是
GetBufferSetLength
,它的作用完全相同。

如果有人能阐明这一点,我将不胜感激。

c++ mfc
1个回答
0
投票

如果您逐字发布函数参数,您会看到差异。

GetBufferSetLength(int nLength);
GetBuffer(int nMinBufferLength);

这种差异在描述中给出。

nMinBufferLength

字符缓冲区可以容纳的最小字符数。该值不包括空终止符的空间。

nLength

CSimpleStringT
字符缓冲区的确切大小(以字符为单位)。

如果需要,

GetBufferSetLength()
会截断或增加缓冲区长度,以完全匹配
nLength
中指定的长度。

GetBuffer()
仅在必要时增加缓冲区长度以匹配
nMinBufferLength
中指定的最小长度。

© www.soinside.com 2019 - 2024. All rights reserved.