FAQ:WinAPI VCPP:зарезервировать буфер в CString — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
(Разделение FAQ на статьи.)
(нет различий)

Версия 20:26, 2 ноября 2008

Как зарезервировать в CString буфер нужной длины?

Это можно сделать при помощи методов класса:

   CString::GetBuffer(...);

и

   CString::GetBufferSetLength(...);

Разница между GetBuffer(nLen) и GetBufferSetLength(nLen) в том, что первый возвращает строку не меньше заданной длины, а второй возвращает строку, точно равную заданной длине. Обе могут перераспределять память, если необходимо. В обычных случаях лучше использовать GetBuffer.

Если содержимое буфера менялось, то после этого нужно вызвать CString::ReleaseBuffer с указанием новой длины. Значение -1 в вызове CString::ReleaseBuffer означает, что длина строки будет вычислена автоматом (функцией strlen) в методе. "-1" удобно использовать, если известно, что строка заканчивается нулем.