Метод CHString::GetBufferSetLength (chstring.h)

[Класс CHString является частью платформы поставщика WMI, которая в настоящее время рассматривается в окончательном состоянии, и никакие дальнейшие разработки, улучшения или обновления не будут доступны для проблем, не связанных с безопасностью, влияющих на эти библиотеки. API mi mi следует использовать для всех новых разработок.]

Метод GetBufferSetLength возвращает указатель на внутренний буфер символов для объекта CHString , усекая или увеличивая его длину, если это необходимо для точного соответствия длине, указанной в nNewLength.

Синтаксис

LPWSTR  throw(CHeap_Exception) GetBufferSetLength(
  int nNewLength
);

Параметры

nNewLength

Точный размер буфера символов CHString , измеряемый в символах.

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

Возвращает указатель LPWSTR на буфер символов объекта (с завершением NULL).

Комментарии

Возвращаемый указатель LPWSTR , который не является константным, позволяет напрямую изменять содержимое CHString .

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

После вызова ReleaseBuffer адрес, возвращаемый GetBufferSetLength , может быть недопустимым, так как дополнительные операции CHString могут привести к перераспределению буфера CHString . Если длина строки CHString не изменена, буфер не переназначается. Буферная память освобождается автоматически при уничтожении объекта CHString .

Обратите внимание, что при самостоятельном отслеживании длины строки не следует добавлять завершающий символ NULL . Однако при освобождении буфера с помощью ReleaseBuffer необходимо указать конечную длину строки. При добавлении завершающего символа NULL при вызове ReleaseBuffer необходимо передать –1 (значение по умолчанию) для длины. Метод ReleaseBuffer вызывает функцию wcslen в буфере, чтобы определить ее длину.

Примеры

В следующем примере кода показано использование CHString::GetBufferSetLength.

CHString str;
LPWSTR pstr = str.GetBufferSetLength(3);
pstr[0] = 'I';
pstr[1] = 'c';
pstr[2] = 'e';

// No need for trailing zero or call to ReleaseBuffer()
// because GetBufferSetLength() set it for you.

str += " hockey is best!";
printf( "str: %S\n", (LPCWSTR)str );

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header chstring.h (включая FwCommon.h)
Библиотека FrameDyn.lib
DLL FrameDynOS.dll; FrameDyn.dll

См. также раздел

CHString

CHString::GetBuffer

CHString::ReleaseBuffer