CStringData 클래스
이 클래스는 문자열 개체의 데이터를 나타냅니다.
구문
struct CStringData
멤버
메서드
속성 | 설명 |
---|---|
AddRef | 문자열 데이터 개체의 참조 수를 증분합니다. |
data | 문자열 개체의 문자 데이터를 검색합니다. |
IsLocked | 연결된 문자열 개체의 버퍼가 잠겨 있는지 여부를 확인합니다. |
IsShared | 연결된 문자열 개체의 버퍼가 현재 공유되는지 여부를 확인합니다. |
잠금 | 연결된 문자열 개체의 버퍼를 잠깁니다. |
엔지니어링 | 지정된 문자열 개체를 해제합니다. |
Unlock | 연결된 문자열 개체의 버퍼를 잠금 해제합니다. |
데이터 멤버
속성 | 설명 |
---|---|
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();
설명
문자열 데이터 개체의 문자 버퍼를 잠그려면 이 함수를 호출합니다. 잠금 및 잠금 해제는 개발자가 문자 버퍼에 직접 액세스해야 하는 경우에 사용됩니다. 잠금의 좋은 예는 의 LockBuffer 및 UnlockBuffer 메서드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
과 일치해야 합니다.
잠금 및 잠금 해제는 개발자가 문자열 데이터를 공유하지 않도록 해야 하는 경우에 사용됩니다. 잠금의 좋은 예는 의 LockBuffer 및 UnlockBuffer 메서드CSimpleStringT
에 의해 설명된다.