Я пытаюсь понять функцию GetBuffer (). Похоже, он возвращает вам указатель на CString, который подтверждается в msdn GetBuffer (). Однако я не понимаю пример, показанный в msdn GetBuffer ().
LPTSTR p = s.GetBuffer( 10 );
Есть ли причина, почему внутри 10? Может кто-нибудь показать мне вывод этого примера?
10 — это минимальная длина буфера, поэтому, если вы вызовете GetBuffer () для CString, скажем, из 4 символов, он выделит LPTSTR длиной 10 символов, в случае, если вы хотите поместить в этот буфер более длинную строку (как они это делают в пример). Число 10 в этом примере является произвольным, они могут так же легко использовать 6 (пять букв в «Hello» плюс завершающий ноль) или любое большее число, и это сработало бы так же.
В целом, тем не менее, вам будет лучше избегать GetBuffer (), если вам действительно не нужно его использовать.
Других решений пока нет …