Метод 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 |