2013-06-13 1 views
1

Я пытаюсь понять функцию GetBuffer(). Похоже, он возвращает вам указатель на CString, который подтвержден в msdn GetBuffer(). Тем не менее, я не понимаю пример, показанный в msdn GetBuffer().CString :: GetBuffer() example

LPTSTR p = s.GetBuffer(10); 

Есть ли причина, по которой это 10? Может ли кто-нибудь показать мне результат примера?

ответ

1

10 - минимальная длина буфера, поэтому, если вы вызываете GetBuffer() на CString, скажем, на 4 символа, он будет выделять длинные строки LPTSTR 10, если вы хотите перетащить более длинную строку в этот буфер (как и в примере). 10 в примере произвольны, они могут так же легко использовать 6 (пять букв в «Привет» плюс завершающий нуль) или любое большее число, и это сработало бы так же.

В общем, вам будет лучше избавиться от GetBuffer(), если вам действительно не нужно его использовать.

+0

только цитата из документов: «Это значение не включает пробел для нулевого терминатора». ; Таким образом, для «Hello» это должно imho быть 5. – Paladin