FAQ:WinAPI VCPP:зарезервировать буфер в CString
Материал из Весельчак У
Версия от 22:11, 3 октября 2009; RXL (обсуждение | вклад)
Как зарезервировать в CString буфер нужной длины?
Это можно сделать при помощи методов класса:
CString::GetBuffer(...);
и
CString::GetBufferSetLength(...);
Разница между GetBuffer(nLen) и GetBufferSetLength(nLen) в том, что первый возвращает строку не меньше заданной длины, а второй возвращает строку, точно равную заданной длине. Обе могут перераспределять память, если необходимо. В обычных случаях лучше использовать GetBuffer.
Если содержимое буфера менялось, то после этого нужно вызвать CString::ReleaseBuffer с указанием новой длины. Значение -1 в вызове CString::ReleaseBuffer означает, что длина строки будет вычислена автоматом (функцией strlen) в методе. "-1" удобно использовать, если известно, что строка заканчивается нулем.