5

我试图了解 GetBuffer() 函数。看起来它会返回指向 CString 的指针,这在 msdn GetBuffer()中得到了确认。但是,我不明白msdn GetBuffer()中显示的示例。

LPTSTR p = s.GetBuffer( 10 );

里面有10个有什么原因吗?谁能告诉我示例的输出?

4

1 回答 1

5

10 是最小缓冲区长度,因此,如果您在 4 个字符的 CString 上调用 GetBuffer(),它将分配一个 10 个字符长的 LPTSTR,以防您想将更长的字符串 strcpy 到该缓冲区中(就像他们在这个例子)。示例中的 10 是任意的,它们可以很容易地使用 6(“Hello”中的五个字母加上终止的 null)或任何更大的数字,它的工作原理是一样的。

不过,一般来说,除非你真的需要使用它,否则最好不要使用 GetBuffer()。

于 2013-06-13T20:57:29.813 回答