다음을 통해 공유


CHString::GetBufferSetLength 메서드(chstring.h)

[CHString 클래스는 현재 최종 상태로 간주되는 WMI 공급자 프레임워크의 일부로, 이 라이브러리에 영향을 미치는 보안과 관련되지 않은 문제에 대해서는 더 이상 개발, 개선 또는 업데이트가 이루어지지 않습니다. MI API는 모든 새 개발에 사용해야 합니다.]

GetBufferSetLength 메서드는 CHString 개체의 내부 문자 버퍼에 대한 포인터를 반환하여 nNewLength에 지정된 길이와 정확히 일치하도록 필요한 경우 길이를 잘리거나 늘입니다.

구문

LPWSTR  throw(CHeap_Exception) GetBufferSetLength(
  int nNewLength
);

매개 변수

nNewLength

문자 단위로 측정된 CHString 문자 버퍼의 정확한 크기입니다.

반환 값

개체의 (NULL 종료) 문자 버퍼에 대한 LPWSTR 포인터를 반환합니다.

설명

const가 아닌 반환된 LPWSTR 포인터를 사용하면 CHString 콘텐츠를 직접 수정할 수 있습니다.

GetBuffer에서 반환한 포인터를 사용하여 문자열 내용을 변경하는 경우 다른 CHString 메서드를 사용하기 전에 ReleaseBuffer를 호출해야 합니다.

ReleaseBuffer를 호출한 후 추가 CHString 작업으로 인해 CHString 버퍼가 다시 할당될 수 있으므로 GetBufferSetLength에서 반환된 주소가 유효하지 않을 수 있습니다. CHString 문자열의 길이를 변경하지 않으면 버퍼가 다시 할당되지 않습니다. CHString 개체가 제거되면 버퍼 메모리가 자동으로 해제됩니다.

문자열 길이를 직접 추적하는 경우 종결 NULL 문자를 추가하면 안 됩니다. 그러나 ReleaseBuffer를 사용하여 버퍼를 해제할 때 최종 문자열 길이를 지정해야 합니다. ReleaseBuffer를 호출할 때 종료되는 NULL 문자를 추가하는 경우 길이에 대해 –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
헤더 chstring.h(FwCommon.h 포함)
라이브러리 FrameDyn.lib
DLL FrameDynOS.dll; FrameDyn.dll

추가 정보

CHString

CHString::GetBuffer

CHString::ReleaseBuffer