Поделиться через


CSimpleStringT::GetBuffer

Возвращает указатель на внутренний буфер символов для объекта CSimpleStringT.

PXSTR GetBuffer(
   int nMinBufferLength
);
PXSTR GetBuffer();

Параметры

  • nMinBufferLength
    Минимальное количество знаков, которое может содержаться в буфере символов.Это значение не включает пространство для признака конца null.

    Если nMinBufferLength больше, чем длина текущего буфера, GetBuffer удаляет текущий буфер, заменить его с буфером запрошенного размера и задает количество ссылок на объекты на ноль.Если ранее, называемые LockBuffer в этом буфере, разрыве блокировки буфера.

Возвращаемое значение

PXSTR указатель на буфер символов (null- завершенного) объекта.

Заметки

Вызывайте этот метод для возврата содержимое буфера объекта CSimpleStringT.Возвращаемое PXSTR не константы и поэтому не позволяет непосредственно изменение содержимого CSimpleStringT.

Если используется указатель на возвращенный GetBuffer чтобы изменить содержимое строки, необходимо вызвать метод ReleaseBuffer прежде чем использовать другие методы члена CSimpleStringT.

Адрес, возвращенный GetBuffer не может быть допустимым после вызова метода ReleaseBuffer так как дополнительные операции CSimpleStringT могут привести к тому, что буфер CSimpleStringT быть reallocated.Буфер reallocated если не изменить длину CSimpleStringT.

Память буферов освобождается автоматически, когда объект CSimpleStringT удален.

Если отслеживание самостоятельно сохранить длины строки, не нужно добавить конечный нуль-символ.Однако необходимо определить окончательную длину строки при выпуске буфер с ReleaseBuffer.При добавлении конечной нуль-символ, необходимо передать – 1 (по умолчанию) для длины.ReleaseBuffer затем определяет длину буфера.

Если недостаточно памяти для удовлетворения запроса GetBuffer, штрихи этого метода CMemoryException*.

Пример

CSimpleString s(_T("abcd"), pMgr);

LPTSTR pBuffer = s.GetBuffer(10);
int    sizeOfBuffer = s.GetAllocLength();

// Directly access CSimpleString buffer
_tcscpy_s(pBuffer, sizeOfBuffer, _T("Hello")); 
ASSERT(_tcscmp(s, _T("Hello")) == 0);

s.ReleaseBuffer();   

Требования

заголовок: atlsimpstr.h

См. также

Ссылки

Класс CSimpleStringT

CSimpleStringT::GetBufferSetLength

CSimpleStringT::ReleaseBuffer