다음을 통해 공유


CStringData 클래스

이 클래스는 문자열 개체의 데이터를 나타냅니다.

구문

struct CStringData

멤버

메서드

이름 설명
AddRef 문자열 데이터 개체의 참조 수를 증분합니다.
data 문자열 개체의 문자 데이터를 검색합니다.
IsLocked 연결된 문자열 개체의 버퍼가 잠겨 있는지 여부를 확인합니다.
Isshared 연결된 문자열 개체의 버퍼가 현재 공유되는지 여부를 확인합니다.
잠금 연결된 문자열 개체의 버퍼를 잠깁니다.
릴리스 지정된 문자열 개체를 해제합니다.
잠금을 해제 연결된 문자열 개체의 버퍼를 잠금 해제합니다.

데이터 멤버

이름 설명
nAllocLength s에서 XCHAR할당된 데이터의 길이(null 종료 포함 안 됨)
nDataLength s에서 XCHAR현재 사용되는 데이터의 길이(null 종료 포함 안 됨)
nRefs 개체의 현재 참조 수입니다.
pStringMgr 이 문자열 개체의 문자열 관리자에 대한 포인터입니다.

설명

이 클래스는 사용자 지정 문자열 관리자를 구현하는 개발자만 사용해야 합니다. 사용자 지정 문자열 관리자에 대한 자세한 내용은 메모리 관리 및 CStringT를 참조 하세요.

이 클래스는 CStringT, CSimpleStringT 또는 CFixedStringT 개체와 같이 더 높은 문자열 개체와 연결된 다양한 유형의 정보와 데이터를 캡슐화합니다. 모든 상위 문자열 개체는 연결된 CStringData 개체에 대한 포인터를 포함하므로 여러 문자열 개체가 동일한 문자열 데이터 개체를 가리킬 수 있습니다. 이 관계는 개체의 참조 수(nRefs) CStringData 로 표시됩니다.

참고 항목

경우에 따라 문자열 형식(예: CFixedString)은 문자열 데이터 개체를 둘 이상의 문자열 개체와 공유하지 않습니다. 이에 대한 자세한 내용은 메모리 관리 및 CStringT를 참조하세요.

이 데이터는 다음으로 구성됩니다.

  • 문자열의 메모리 관리자(IAtlStringMgr 형식)입니다.

  • 문자열의 현재 길이( nDataLength)입니다.

  • 문자열의 할당된 길이( nAllocLength)입니다. 성능상의 이유로 현재 문자열 길이와 다를 수 있습니다.

  • 개체의 현재 참조 수( nRefs)입니다 CStringData . 이 값은 동일한 CStringData 개체를 공유하는 문자열 개체 수를 결정하는 데 사용됩니다.

  • 문자열의 실제 문자 버퍼( 데이터)입니다.

    참고 항목

    문자열 개체의 실제 문자 버퍼는 문자열 관리자에 의해 할당되고 개체에 CStringData 추가됩니다.

요구 사항

헤더: atlsimpstr.h

CStringData::AddRef

문자열 개체의 참조 수를 증분합니다.

void AddRef() throw();

설명

문자열 개체의 참조 수를 증분합니다.

참고 항목

음수 개수는 문자열 버퍼가 잠겨 있음을 나타내므로 음수 참조 수가 있는 문자열에서 이 메서드를 호출하지 마세요.

CStringData::d ata

문자열 개체의 문자 버퍼에 대한 포인터를 반환합니다.

void* data() throw();

Return Value

문자열 개체의 문자 버퍼에 대한 포인터입니다.

설명

연결된 문자열 개체의 현재 문자 버퍼를 반환하려면 이 함수를 호출합니다.

참고 항목

이 버퍼는 개체가 CStringData 아니라 필요한 경우 문자열 관리자에 의해 할당됩니다. 할당되면 버퍼가 문자열 데이터 개체에 추가됩니다.

CStringData::IsLocked

문자 버퍼가 잠겨 있는지 여부를 확인합니다.

bool IsLocked() const throw();

Return Value

버퍼가 잠겨 있으면 TRUE를 반환합니다. 그렇지 않으면 FALSE입니다.

설명

문자열 개체의 문자 버퍼가 현재 잠겨 있는지 확인하려면 이 함수를 호출합니다.

CStringData::IsShared

문자 버퍼가 공유되는지 여부를 확인합니다.

bool IsShared() const throw();

Return Value

버퍼가 공유되면 TRUE를 반환합니다. 그렇지 않으면 FALSE입니다.

설명

문자열 데이터 개체의 문자 버퍼가 현재 여러 문자열 개체 간에 공유되는지 확인하려면 이 함수를 호출합니다.

CStringData::Lock

연결된 문자열 개체의 문자 버퍼를 잠깁니다.

void Lock() throw();

설명

문자열 데이터 개체의 문자 버퍼를 잠그려면 이 함수를 호출합니다. 잠금 및 잠금 해제는 개발자가 문자 버퍼에 직접 액세스해야 하는 경우에 사용됩니다. 잠금의 좋은 예는 의 LockBufferUnlockBuffer 메서드CSimpleStringT에 의해 설명된다.

참고 항목

상위 문자열 개체 간에 버퍼를 공유하지 않는 경우에만 문자 버퍼를 잠글 수 있습니다.

CStringData::nAllocLength

할당된 문자 버퍼의 길이입니다.

int nAllocLength;

설명

할당된 데이터 버퍼의 길이를 s에 XCHAR저장합니다(null 종료를 포함하지 않음).

CStringData::nDataLength

문자열 개체의 현재 길이입니다.

int nDataLength;

설명

현재 사용되는 데이터의 길이를 s에 XCHAR저장합니다(null 종료를 포함하지 않음).

CStringData::nRefs

문자열 데이터 개체의 참조 수입니다.

long nRefs;

설명

문자열 데이터 개체의 참조 수를 저장합니다. 이 개수는 문자열 데이터 개체와 연결된 더 높은 문자열 개체의 수를 나타냅니다. 음수 값은 문자열 데이터 개체가 현재 잠겨 있음을 나타냅니다.

CStringData::p StringMgr

연결된 문자열 개체의 메모리 관리자입니다.

IAtlStringMgr* pStringMgr;

설명

연결된 문자열 개체의 메모리 관리자를 저장합니다. 메모리 관리자 및 문자열에 대한 자세한 내용은 메모리 관리 및 CStringT를 참조하세요.

CStringData::Release

문자열 데이터 개체의 참조 수를 줄입니다.

void Release() throw();

설명

참조 횟수가 0에 도달하면 구조를 해제하여 CStringData 참조 수를 줄이려면 이 함수를 호출합니다. 이 작업은 일반적으로 문자열 개체가 삭제될 때 수행되므로 더 이상 문자열 데이터 개체를 참조할 필요가 없습니다.

예를 들어 다음 코드는 연결된 str1문자열 데이터 개체를 호출 CStringData::Release 합니다.

{
   CString str1 = _T("Hello world");  // Allocates new CStringData
}
// str1 is deleted when it goes out of scope, so it releases its string data   

CStringData::Unlock

연결된 문자열 개체의 문자 버퍼를 잠금 해제합니다.

void Unlock() throw();

설명

문자열 데이터 개체의 문자 버퍼를 잠금 해제하려면 이 함수를 호출합니다. 버퍼가 잠금 해제되면 공유할 수 있으며 참조 개수를 계산할 수 있습니다.

참고 항목

각 호출은 Lock 해당 호출 Unlock과 일치해야 합니다.

잠금 및 잠금 해제는 개발자가 문자열 데이터를 공유하지 않도록 해야 하는 경우에 사용됩니다. 잠금의 좋은 예는 의 LockBufferUnlockBuffer 메서드CSimpleStringT에 의해 설명된다.

참고 항목

계층 구조 차트
ATL/MFC 공유 클래스