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