CSimpleStringT
수업
이 클래스는 개체를 CSimpleStringT
나타냅니다.
구문
template <typename BaseType>
class CSimpleStringT
매개 변수
BaseType
문자열 클래스의 문자 형식입니다. 다음 중 하나일 수 있습니다.
char
(ANSI 문자 문자열의 경우).wchar_t
(유니코드 문자열의 경우).TCHAR
(ANSI 및 유니코드 문자열 모두).
멤버
공용 Typedefs
속성 | 설명 |
---|---|
CSimpleStringT::PCXSTR |
상수 문자열에 대한 포인터입니다. |
CSimpleStringT::PXSTR |
문자열에 대한 포인터입니다. |
공용 생성자
속성 | 설명 |
---|---|
CSimpleStringT::CSimpleStringT |
다양한 방법으로 개체를 생성합니다 CSimpleStringT . |
CSimpleStringT::~CSimpleStringT |
소멸자 |
공용 메서드
이름 | 설명 |
---|---|
CSimpleStringT::Append |
기존 CSimpleStringT 개체에 CSimpleStringT 개체를 추가합니다. |
CSimpleStringT::AppendChar |
기존 CSimpleStringT 개체에 문자를 추가합니다. |
CSimpleStringT::CopyChars |
문자 또는 문자를 다른 문자열에 복사합니다. |
CSimpleStringT::CopyCharsOverlapped |
버퍼가 겹치는 다른 문자열에 문자 또는 문자를 복사합니다. |
CSimpleStringT::Empty |
문자열의 길이가 0이 되도록 합니다. |
CSimpleStringT::FreeExtra |
문자열 개체에서 이전에 할당한 추가 메모리를 해제합니다. |
CSimpleStringT::GetAllocLength |
개체의 할당된 길이를 CSimpleStringT 검색합니다. |
CSimpleStringT::GetAt |
지정된 위치에 있는 문자를 반환합니다. |
CSimpleStringT::GetBuffer |
의 문자에 대한 포인터를 반환합니다 CSimpleStringT . |
CSimpleStringT::GetBufferSetLength |
지정된 길이로 잘려서 CSimpleStringT 문자에 대한 포인터를 반환합니다. |
CSimpleStringT::GetLength |
개체의 문자 CSimpleStringT 수를 반환합니다. |
CSimpleStringT::GetManager |
개체의 메모리 관리자를 검색합니다 CSimpleStringT . |
CSimpleStringT::GetString |
문자열을 검색합니다. |
CSimpleStringT::IsEmpty |
개체에 문자가 CSimpleStringT 없는지 테스트합니다. |
CSimpleStringT::LockBuffer |
참조 계산을 사용하지 않도록 설정하고 버퍼 내 문자열을 보호합니다. |
CSimpleStringT::Preallocate |
문자 버퍼에 대한 특정 양의 메모리를 할당합니다. |
CSimpleStringT::ReleaseBuffer |
에서 반환 GetBuffer 하는 버퍼의 제어를 해제합니다. |
CSimpleStringT::ReleaseBufferSetLength |
에서 반환 GetBuffer 하는 버퍼의 제어를 해제합니다. |
CSimpleStringT::SetAt |
지정된 위치에 문자를 설정합니다. |
CSimpleStringT::SetManager |
개체의 메모리 관리자를 CSimpleStringT 설정합니다. |
CSimpleStringT::SetString |
개체의 문자열을 CSimpleStringT 설정합니다. |
CSimpleStringT::StringLength |
지정된 문자열의 문자 수를 반환합니다. |
CSimpleStringT::Truncate |
문자열을 지정된 길이로 자립니다. |
CSimpleStringT::UnlockBuffer |
참조 계산을 사용하도록 설정하고 버퍼 내 문자열을 해제합니다. |
Public 연산자
속성 | 설명 |
---|---|
CSimpleStringT::operator PCXSTR |
개체에 C 스타일 문자열로 저장된 문자에 CSimpleStringT 직접 액세스합니다. |
CSimpleStringT::operator[] |
지정된 위치에 GetAt 있는 문자를 반환합니다. |
CSimpleStringT::operator += |
새 문자열을 기존 문자열의 끝에 연결합니다. |
CSimpleStringT::operator = |
개체에 새 값을 CSimpleStringT 할당합니다. |
설명
CSimpleStringT
는 Visual C++에서 지원하는 다양한 문자열 클래스의 기본 클래스입니다. 문자열 개체의 메모리 관리 및 기본 버퍼 조작에 대한 최소한의 지원을 제공합니다. 고급 문자열 개체는 다음을 참조하세요 CStringT Class
.
요구 사항
머리글: atlsimpstr.h
CSimpleStringT::Append
기존 CSimpleStringT
개체에 CSimpleStringT
개체를 추가합니다.
구문
void Append(const CSimpleStringT& strSrc);
void Append(PCXSTR pszSrc, int nLength);
void Append(PCXSTR pszSrc);
매개 변수
strSrc
CSimpleStringT
추가할 개체입니다.
pszSrc
추가할 문자를 포함하는 문자열에 대한 포인터입니다.
nLength
추가할 문자 수입니다.
설명
기존 CSimpleStringT
개체를 다른 CSimpleStringT
개체에 추가하려면 이 메서드를 호출합니다.
예시
다음 예에서는 CSimpleStringT::Append
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str1(pMgr), str2(pMgr);
str1.SetString(_T("Soccer is"));
str2.SetString(_T(" an elegant game"));
str1.Append(str2);
ASSERT(_tcscmp(str1, _T("Soccer is an elegant game")) == 0);
CSimpleStringT::AppendChar
기존 CSimpleStringT
개체에 문자를 추가합니다.
구문
void AppendChar(XCHAR ch);
매개 변수
ch
추가할 문자입니다.
설명
이 함수를 호출하여 지정된 문자를 기존 CSimpleStringT
개체의 끝에 추가합니다.
CSimpleStringT::CopyChars
개체에 문자 또는 문자를 CSimpleStringT
복사합니다.
구문
static void CopyChars(
XCHAR* pchDest,
const XCHAR* pchSrc,
int nChars) throw();
static void CopyChars(
XCHAR* pchDest,
size_t nDestLen,
const XCHAR* pchSrc,
int nChars) throw();
매개 변수
pchDest
문자열에 대한 포인터입니다.
nDestLen
의 버퍼 크기 pchDest
pchSrc
복사할 문자를 포함하는 문자열에 대한 포인터입니다.
nChars
복사할 문자 수 pchSrc
입니다.
설명
문자열로 pchSrc
문자를 복사하려면 이 메서드를 호출합니다 pchDest
.
예시
다음 예에서는 CSimpleStringT::CopyChars
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(_T("xxxxxxxxxxxxxxxxxxx"), 20, pMgr);
const TCHAR* pszSrc = _T("Hello world!");
_tprintf_s(_T("%s\n"), str);
str.CopyChars(str.GetBuffer(), 20, pszSrc, 12);
_tprintf_s(_T("%s\n"), str);
이 예제의 출력은 다음과 같습니다.
xxxxxxxxxxxxxxxxxxx
Hello world!xxxxxxx
CSimpleStringT::CopyCharsOverlapped
개체에 문자 또는 문자를 CSimpleStringT
복사합니다.
구문
static void CopyCharsOverlapped(
XCHAR* pchDest,
const XCHAR* pchSrc,
int nChars) throw();
매개 변수
pchDest
문자열에 대한 포인터입니다.
pchSrc
복사할 문자를 포함하는 문자열에 대한 포인터입니다.
nChars
복사할 문자 수 pchSrc
입니다.
설명
문자열로 pchSrc
문자를 복사하려면 이 메서드를 호출합니다 pchDest
. 달리 CopyChars
, CopyCharsOverlapped
겹칠 수 있는 문자 버퍼에서 복사할 수 있는 안전한 메서드를 제공합니다.
예시
예제 CSimpleStringT::CopyChars
또는 (에 있는atlsimpstr.h
) 소스 코드를 CSimpleStringT::SetString
참조하세요.
CSimpleStringT::CSimpleStringT
CSimpleStringT
개체를 생성합니다.
구문
CSimpleStringT(const XCHAR* pchSrc, int nLength, IAtlStringMgr* pStringMgr);
CSimpleStringT(PCXSTR pszSrc, IAtlStringMgr* pStringMgr);
CSimpleStringT(const CSimpleStringT& strSrc);
explicit CSimpleStringT(IAtlStringMgr* pStringMgr) throw();
매개 변수
strSrc
이 CSimpleStringT
개체에 복사할 기존 CSimpleStringT
개체입니다.
pchSrc
null이 종료되지 않은 길이 nLength
문자 배열에 대한 포인터입니다.
pszSrc
이 CSimpleStringT
개체에 복사할 null로 끝나는 문자열입니다.
nLength
의 문자 수입니다 pch
.
pStringMgr
개체의 메모리 관리자에 대한 포인터입니다 CSimpleStringT
. 메모리 관리 및 메모리 관리에 대한 IAtlStringMgr
CSimpleStringT
자세한 내용은 메모리 관리 및 .CStringT
설명
새 CSimpleStringT
개체를 생성합니다. 생성자는 입력 데이터를 할당된 새 스토리지에 복사하므로 메모리 예외가 발생할 수 있습니다.
예시
다음 예제에서는 ATL typedef
CSimpleString
을 사용하여 사용하는 CSimpleStringT::CSimpleStringT
방법을 보여 줍니다. CSimpleString
는 클래스 템플릿 CSimpleStringT
의 일반적으로 사용되는 특수화입니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString s1(pMgr);
// Empty string
CSimpleString s2(_T("cat"), pMgr);
// From a C string literal
CSimpleString s3(s2);
// Copy constructor
CSimpleString s4(s2 + _T(" ") + s3);
// From a string expression
CSimpleString s5(_T("xxxxxx"), 6, pMgr);
// s5 = "xxxxxx"
CSimpleStringT::Empty
이 CSimpleStringT
개체를 빈 문자열로 만들고 메모리를 적절하게 해제합니다.
구문
void Empty() throw();
설명
자세한 내용은 문자열: CString
예외 정리를 참조하세요.
예시
다음 예에서는 CSimpleStringT::Empty
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString s(pMgr);
ASSERT(s.IsEmpty());
CSimpleStringT::FreeExtra
이전에 문자열에 의해 할당되었지만 더 이상 필요하지 않은 추가 메모리를 해제합니다.
구문
void FreeExtra();
설명
이렇게 하면 문자열 개체에서 사용하는 메모리 오버헤드가 줄어듭니다. 메서드는 버퍼를 반환 GetLength
된 정확한 길이로 다시 할당합니다.
예시
CAtlString basestr;
IAtlStringMgr* pMgr;
pMgr= basestr.GetManager();
ASSERT(pMgr != NULL);
// Create a CSimpleString with 28 characters
CSimpleString str(_T("Many sports are fun to play."), 28, pMgr);
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
// Assigning a smaller string won't cause CSimpleString to free its
// memory, because it assumes the string will grow again anyway.
str = _T("Soccer is best!");
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
// This call forces CSimpleString to release the extra
// memory it doesn't need.
str.FreeExtra();
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
이 예제의 출력은 다음과 같습니다.
Alloc length is 1031, String length is 1024
Alloc length is 1031, String length is 15
Alloc length is 15, String length is 15
CSimpleStringT::GetAllocLength
개체의 할당된 길이를 CSimpleStringT
검색합니다.
구문
int GetAllocLength() const throw();
Return Value
이 개체에 할당된 문자 수입니다.
설명
이 개체에 할당된 문자 수를 확인하려면 이 CSimpleStringT
메서드를 호출합니다. 이 함수를 호출하는 예제를 참조 FreeExtra
하세요.
CSimpleStringT::GetAt
개체에서 CSimpleStringT
한 문자를 반환합니다.
구문
XCHAR GetAt(int iChar) const;
매개 변수
iChar
개체에 있는 문자의 인덱스(0부터 시작하는 인덱스 CSimpleStringT
)입니다. 매개 변수는 iChar
0보다 크거나 같아야 하며 GetLength
. 그렇지 않으면 GetAt
예외가 생성됩니다.
Return Value
XCHAR
문자열의 지정된 위치에 있는 문자를 포함하는 값입니다.
설명
에 지정된 문자 하나를 반환하려면 이 메서드를 iChar
호출합니다. 오버로드된 아래 첨자([]
) 연산자는 편리한 별칭 GetAt
입니다. null 종결자는 .를 사용하여 GetAt
예외를 생성하지 않고 주소를 지정합니다. 그러나 이 값은 계산되지 않으며 반환되는 GetLength
값은 0입니다.
예시
다음 예제에서는 사용 CSimpleStringT::GetAt
하는 방법을 보여 줍니다.
CSimpleString s(_T("abcdef"), pMgr);
ASSERT(s.GetAt(2) == _T('c'));
CSimpleStringT::GetBuffer
개체의 내부 문자 버퍼에 대한 포인터를 CSimpleStringT
반환합니다.
구문
PXSTR GetBuffer(int nMinBufferLength);
PXSTR GetBuffer();
매개 변수
nMinBufferLength
문자 버퍼가 보유할 수 있는 최소 문자 수입니다. 이 값에는 null 종결자에 대한 공간이 포함되지 않습니다.
현재 버퍼의 길이보다 큰 경우 nMinBufferLength
현재 버퍼 GetBuffer
를 삭제하고 요청된 크기의 버퍼로 바꾸고 개체 참조 수를 0으로 다시 설정합니다. 이전에 이 버퍼를 호출 LockBuffer
한 경우 버퍼 잠금이 손실됩니다.
Return Value
PXSTR
개체의 (null로 종료된) 문자 버퍼에 대한 포인터입니다.
설명
개체의 버퍼 내용을 반환하려면 이 메서드를 CSimpleStringT
호출합니다. 반환 PXSTR
된 항목은 상수가 아니므로 콘텐츠를 직접 수정 CSimpleStringT
할 수 있습니다.
반환된 GetBuffer
포인터를 사용하여 문자열 내용을 변경하는 경우 다른 CSimpleStringT
메서드를 사용하기 전에 내부 상태를 CSimpleStringT
업데이트하기 위해 호출 ReleaseBuffer
해야 합니다.
추가 CSimpleStringT
작업으로 인해 버퍼가 다시 할당될 수 있으므로 호출 ReleaseBuffer
후 반환 GetBuffer
된 주소가 CSimpleStringT
유효하지 않을 수 있습니다. 의 길이 CSimpleStringT
를 변경하지 않으면 버퍼가 다시 할당되지 않습니다.
개체가 제거되면 버퍼 메모리가 CSimpleStringT
자동으로 해제됩니다.
문자열 길이를 직접 추적하는 경우 종료 null 문자를 추가하면 안 됩니다. 그러나 버퍼 ReleaseBuffer
를 해제할 때는 마지막 문자열 길이를 지정해야 합니다. 종료 null 문자를 추가하면 길이에 대해 -1(기본값)을 전달해야 합니다. ReleaseBuffer
그런 다음 버퍼 길이를 결정합니다.
요청을 충족 GetBuffer
할 메모리가 부족한 경우 이 메서드는 .를 CMemoryException*
throw합니다.
예시
CSimpleString s(_T("abcd"), pMgr);
LPTSTR pBuffer = s.GetBuffer(10);
int sizeOfBuffer = s.GetAllocLength();
// Directly access CSimpleString buffer
_tcscpy_s(pBuffer, sizeOfBuffer, _T("Hello"));
ASSERT(_tcscmp(s, _T("Hello")) == 0);
s.ReleaseBuffer();
CSimpleStringT::GetBufferSetLength
개체의 내부 문자 버퍼에 대한 CSimpleStringT
포인터를 반환하고, 필요한 경우 해당 길이를 잘라내거나 늘려 지정된 nLength
길이와 정확히 일치합니다.
구문
PXSTR GetBufferSetLength(int nLength);
매개 변수
nLength
문자 버퍼의 CSimpleStringT
정확한 크기입니다.
Return Value
PXSTR
개체의 (null로 종료된) 문자 버퍼에 대한 포인터입니다.
설명
개체의 내부 버퍼의 지정된 길이를 검색하려면 이 메서드를 호출합니다 CSimpleStringT
. 반환된 PXSTR
포인터가 아니 const
므로 내용을 직접 수정 CSimpleStringT
할 수 있습니다.
반환된 GetBufferSetLength
포인터를 사용하여 문자열 내용을 변경하는 경우 다른 CSimpleStringT
메서드를 사용하기 전에 내부 상태를 CSimpleStringT
업데이트하도록 호출 ReleaseBuffer
합니다.
추가 CSimpleStringT
작업으로 인해 버퍼가 다시 할당될 수 있으므로 호출 ReleaseBuffer
후 반환 GetBufferSetLength
된 주소가 CSimpleStringT
유효하지 않을 수 있습니다. 의 길이 CSimpleStringT
를 변경하지 않으면 버퍼가 다시 할당되지 않습니다.
개체가 제거되면 버퍼 메모리가 CSimpleStringT
자동으로 해제됩니다.
문자열 길이를 직접 추적하는 경우 종료되는 null 문자를 추가하지 마세요. 를 사용하여 ReleaseBuffer
버퍼를 해제할 때 최종 문자열 길이를 지정해야 합니다. 호출 ReleaseBuffer
할 때 종료 null 문자를 추가하는 경우 길이에 대해 -1(기본값)을 ReleaseBuffer
전달하고 ReleaseBuffer
strlen
버퍼에서 해당 길이를 확인합니다.
참조 계산에 대한 자세한 내용은 다음 문서를 참조하세요.
- Windows SDK에서 참조 계산 을 통해 개체 수명 관리
- Windows SDK에서 참조 계산 구현
- Windows SDK에서 참조 수를 관리하기 위한 규칙입니다.
예시
다음 예에서는 CSimpleStringT::GetBufferSetLength
의 사용법을 보여줍니다.
CSimpleString str(pMgr);
LPTSTR pstr = str.GetBufferSetLength(3);
pstr[0] = _T('C');
pstr[1] = _T('u');
pstr[2] = _T('p');
str.ReleaseBuffer();
str += _T(" soccer is best!");
ASSERT(_tcscmp(str, _T("Cup soccer is best!")) == 0);
CSimpleStringT::GetLength
개체의 문자 CSimpleStringT
수를 반환합니다.
구문
int GetLength() const throw();
Return Value
문자열의 문자 수입니다.
설명
개체의 문자 수를 반환하려면 이 메서드를 호출합니다. 개수에는 null 종결자가 포함되지 않습니다.
MBCS(멀티바이트 문자 집합) GetLength
의 경우 각 8비트 문자 수를 계산합니다. 즉, 1개의 멀티바이트 문자에 있는 리드와 후행 바이트는 2바이트로 계산됩니다. 이 함수를 호출하는 예제를 참조 FreeExtra
하세요.
CSimpleStringT::GetManager
개체의 메모리 관리자를 검색합니다 CSimpleStringT
.
구문
IAtlStringMgr* GetManager() const throw();
Return Value
개체의 메모리 관리자에 대한 포인터입니다 CSimpleStringT
.
설명
개체에서 사용하는 메모리 관리자를 검색하려면 이 메서드를 호출합니다 CSimpleStringT
. 메모리 관리자 및 문자열 개체 에 대한 자세한 내용은 메모리 관리 및 CStringT
.
CSimpleStringT::GetString
문자열을 검색합니다.
구문
PCXSTR GetString() const throw();
Return Value
null로 끝나는 문자열에 대한 포인터입니다.
설명
개체와 연결된 문자열을 검색하려면 이 메서드를 호출합니다 CSimpleStringT
.
참고 항목
반환된 PCXSTR
포인터는 const
내용의 직접 수정을 CSimpleStringT
허용하지 않습니다.
예시
다음 예에서는 CSimpleStringT::GetString
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(pMgr);
str += _T("Cup soccer is best!");
_tprintf_s(_T("%s"), str.GetString());
이 예제의 출력은 다음과 같습니다.
Cup soccer is best!
CSimpleStringT::IsEmpty
CSimpleStringT
빈 조건에 대한 개체를 테스트합니다.
구문
bool IsEmpty() const throw();
Return Value
개체의 길이가 CSimpleStringT
0이면 반환하고, 그렇지 않으면 FALSE
반환 TRUE
합니다.
설명
이 메서드를 호출하여 개체에 빈 문자열이 포함되어 있는지 확인합니다.
예시
다음 예에서는 CSimpleStringT::IsEmpty
의 사용법을 보여줍니다.
CSimpleString s(pMgr);
ASSERT(s.IsEmpty());
CSimpleStringT::LockBuffer
참조 계산을 사용하지 않도록 설정하고 버퍼 내 문자열을 보호합니다.
구문
PXSTR LockBuffer();
Return Value
개체 또는 null로 끝나는 문자열에 대한 포인터 CSimpleStringT
입니다.
설명
개체의 버퍼를 잠그려면 이 메서드를 호출합니다 CSimpleStringT
. 호출 LockBuffer
하여 참조 수에 대해 -1을 사용하여 문자열의 복사본을 만듭니다. 참조 개수 값이 -1이면 버퍼의 문자열은 "잠긴" 상태로 간주됩니다. 잠긴 상태에서 문자열은 다음 두 가지 방법으로 보호됩니다.
해당 문자열이 잠긴 문자열에 할당된 경우에도 다른 문자열은 잠긴 문자열의 데이터에 대한 참조를 가져올 수 없습니다.
잠긴 문자열은 다른 문자열이 잠긴 문자열에 복사되더라도 다른 문자열을 참조하지 않습니다.
버퍼에서 문자열을 잠그면 버퍼에 대한 문자열의 배타적 보존이 그대로 유지됩니다.
완료 LockBuffer
한 후 참조 횟수를 1로 다시 설정하기 위해 호출 UnlockBuffer
합니다.
참고 항목
잠긴 버퍼를 호출 GetBuffer
하고 매개 변수 nMinBufferLength
를 GetBuffer
현재 버퍼의 길이보다 크게 설정하면 버퍼 잠금이 손실됩니다. 이러한 호출은 GetBuffer
현재 버퍼를 삭제하고, 요청된 크기의 버퍼로 바꾸고, 참조 횟수를 0으로 다시 설정합니다.
참조 계산에 대한 자세한 내용은 다음 문서를 참조하세요.
Windows SDK에서 참조 계산 을 통해 개체 수명 관리
Windows SDK에서 참조 수를 관리하기 위한 규칙
예시
다음 예에서는 CSimpleStringT::LockBuffer
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(_T("Hello"), pMgr);
TCHAR ch;
str.LockBuffer();
ch = str.GetAt(2);
_tprintf_s(_T("%c"), ch);
str.UnlockBuffer();
이 예제의 출력은 다음과 같습니다.
l
CSimpleStringT::operator[]
이 함수를 호출하여 문자 배열의 단일 문자에 액세스합니다.
구문
XCHAR operator[](int iChar) const;
매개 변수
iChar
문자열에 있는 문자의 인덱스(0부터 시작하는 인덱스)입니다.
설명
오버로드된 하위 첨자([]
) 연산자는 0부터 시작하는 인덱스로 지정된 단일 문자를 반환합니다 iChar
. 이 연산자는 멤버 함수를 편리하게 대체합니다 GetAt
.
참고 항목
아래 첨자([]
) 연산자를 사용하여 문자 CSimpleStringT
의 값을 가져올 수 있지만 이 연산자를 사용하여 문자 CSimpleStringT
의 값을 변경할 수는 없습니다.
예시
다음 예에서는 CSimpleStringT::operator []
의 사용법을 보여줍니다.
CSimpleString s(_T("abc"), pMgr);
ASSERT(s[1] == _T('b'));
CSimpleStringT::operator []
이 함수를 호출하여 문자 배열의 단일 문자에 액세스합니다.
구문
XCHAR operator[](int iChar) const;
매개 변수
iChar
문자열에 있는 문자의 인덱스(0부터 시작하는 인덱스)입니다.
설명
오버로드된 하위 첨자([]
) 연산자는 0부터 시작하는 인덱스로 지정된 단일 문자를 반환합니다 iChar
. 이 연산자는 멤버 함수를 편리하게 대체합니다 GetAt
.
참고 항목
아래 첨자([]
) 연산자를 사용하여 문자 CSimpleStringT
의 값을 가져올 수 있지만 이 연산자를 사용하여 문자 CSimpleStringT
의 값을 변경할 수는 없습니다.
CSimpleStringT::operator +=
새 문자열 또는 문자를 기존 문자열의 끝에 조인합니다.
구문
CSimpleStringT& operator +=(PCXSTR pszSrc);
CSimpleStringT& operator +=(const CSimpleStringT& strSrc);
template<int t_nSize>
CSimpleStringT& operator+=(const CStaticString< XCHAR, t_nSize >& strSrc);
CSimpleStringT& operator +=(char ch);
CSimpleStringT& operator +=(unsigned char ch);
CSimpleStringT& operator +=(wchar_t ch);
매개 변수
pszSrc
null로 끝나는 문자열에 대한 포인터입니다.
strSrc
기존 CSimpleStringT
개체에 대한 포인터입니다.
ch
추가할 문자입니다.
설명
연산자는 다른 CSimpleStringT
개체 또는 문자를 허용합니다. 이 개체에 추가된 문자에 대해 새 스토리지가 할당될 수 있으므로 이 연결 연산자를 사용할 때마다 메모리 예외가 CSimpleStringT
발생할 수 있습니다.
예시
다음 예에서는 CSimpleStringT::operator +=
의 사용법을 보여줍니다.
CSimpleString str(_T("abc"), pMgr);
ASSERT(_tcscmp((str += _T("def")), _T("abcdef")) == 0);
CSimpleStringT::operator =
개체에 새 값을 CSimpleStringT
할당합니다.
구문
CSimpleStringT& operator =(PCXSTR pszSrc);
CSimpleStringT& operator =(const CSimpleStringT& strSrc);
매개 변수
pszSrc
null로 끝나는 문자열에 대한 포인터입니다.
strSrc
기존 CSimpleStringT
개체에 대한 포인터입니다.
설명
대상 문자열(왼쪽)이 이미 새 데이터를 저장할 만큼 충분히 큰 경우 새 메모리 할당이 수행되지 않습니다. 새 스토리지가 결과 개체를 보유하도록 할당되는 경우가 많기 때문에 대입 연산자를 CSimpleStringT
사용할 때마다 메모리 예외가 발생할 수 있습니다.
예시
다음 예에서는 CSimpleStringT::operator =
의 사용법을 보여줍니다.
CSimpleString s1(pMgr), s2(pMgr);
// Empty CSimpleStringT objects
s1 = _T("cat");
// s1 = "cat"
ASSERT(_tcscmp(s1, _T("cat")) == 0);
s2 = s1; // s1 and s2 each = "cat"
ASSERT(_tcscmp(s2, _T("cat")) == 0);
s1 = _T("the ") + s1;
// Or expressions
ASSERT(_tcscmp(s1, _T("the cat")) == 0);
s1 = _T("x");
// Or just individual characters
ASSERT(_tcscmp(s1, _T("x")) == 0);
CSimpleStringT::operator PCXSTR
개체에 C 스타일 문자열로 저장된 문자에 CSimpleStringT
직접 액세스합니다.
구문
operator PCXSTR() const throw();
Return Value
문자열의 데이터에 대한 문자 포인터입니다.
설명
문자는 복사되지 않습니다. 포인터만 반환됩니다. 이 연산자에 주의하세요. 문자 포인터를 CString
가져온 후 개체를 변경하면 포인터를 무효화하는 메모리 재할당이 발생할 수 있습니다.
예시
다음 예에서는 CSimpleStringT::operator PCXSTR
의 사용법을 보여줍니다.
// If the prototype of a function is known to the compiler,
// the PCXSTR cast operator may be invoked implicitly.
CSimpleString strSports(L"Soccer is Best!", pMgr);
WCHAR sz[1024];
wcscpy_s(sz, strSports);
// If the prototype isn't known or is a va_arg prototype,
// you must invoke the cast operator explicitly. For example,
// the va_arg part of a call to swprintf_s() needs the cast:
swprintf_s(sz, 1024, L"I think that %s!\n", (PCWSTR)strSports);
// While the format parameter is known to be an PCXSTR and
// therefore doesn't need the cast:
swprintf_s(sz, 1024, strSports);
// Note that some situations are ambiguous. This line will
// put the address of the strSports object to stdout:
wcout << strSports;
// while this line will put the content of the string out:
wcout << (PCWSTR)strSports;
CSimpleStringT::PCXSTR
상수 문자열에 대한 포인터입니다.
구문
typedef ChTraitsBase< BaseType >::PCXSTR PCXSTR;
CSimpleStringT::Preallocate
개체에 대해 CSimpleStringT
특정 바이트 양을 할당합니다.
구문
void Preallocate( int nLength);
매개 변수
nLength
문자 버퍼의 CSimpleStringT
정확한 크기입니다.
설명
개체에 대한 특정 버퍼 크기를 할당하려면 이 메서드를 호출합니다 CSimpleStringT
.
CSimpleStringT
는 문자 버퍼의 STATUS_NO_MEMORY
공간을 할당할 수 없는 경우 예외를 생성합니다. 기본적으로 메모리 할당은 WIN32 API 함수 또는 HeapReAlloc
.에 의해 수행됩니다HeapAlloc
.
예시
다음 예에서는 CSimpleStringT::Preallocate
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(pMgr);
_tprintf_s(_T("Allocated length: %d\n"), str.GetAllocLength());
str.Preallocate(100);
_tprintf_s(_T("Allocated length: %d\n"), str.GetAllocLength());
이 예제의 출력은 다음과 같습니다.
Allocated length: 0
Allocated length: 103
CSimpleStringT::PXSTR
문자열에 대한 포인터입니다.
구문
typedef ChTraitsBase< BaseType >::PXSTR PXSTR;
CSimpleStringT::ReleaseBuffer
에서 할당 GetBuffer
한 버퍼의 제어를 해제합니다.
구문
void ReleaseBuffer(int nNewLength = -1);
매개 변수
nNewLength
null 종결자를 계산하지 않고 문자열의 새 길이(문자)입니다. 문자열이 null로 종료되면 -1 기본값은 CSimpleStringT
크기를 문자열의 현재 길이로 설정합니다.
설명
문자열 개체의 버퍼를 다시 할당하거나 해제하려면 이 메서드를 호출합니다. 버퍼의 문자열이 null로 종료되었음을 알고 있는 경우 인수를 생략할 nNewLength
수 있습니다. 문자열이 null로 종료되지 않은 경우 길이를 지정하는 데 사용합니다 nNewLength
. 호출 ReleaseBuffer
또는 다른 CSimpleStringT
작업 후에 반환된 GetBuffer
주소가 잘못되었습니다.
예시
다음 예에서는 CSimpleStringT::ReleaseBuffer
의 사용법을 보여줍니다.
const int bufferSize = 1024;
CSimpleString s(_T("abc"), pMgr);
LPTSTR p = s.GetBuffer(bufferSize);
_tcscpy_s(p, bufferSize, _T("abc"));
// use the buffer directly
ASSERT(s.GetLength() == 3);
// String length = 3
s.ReleaseBuffer();
// Surplus memory released, p is now invalid.
ASSERT(s.GetLength() == 3);
// Length still 3
CSimpleStringT::ReleaseBufferSetLength
에서 할당 GetBuffer
한 버퍼의 제어를 해제합니다.
구문
void ReleaseBufferSetLength(int nNewLength);
매개 변수
nNewLength
해제되는 문자열의 길이입니다.
설명
이 함수는 문자열 개체의 ReleaseBuffer
유효한 길이를 전달해야 한다는 점을 제외하고 기능적으로 유사합니다.
CSimpleStringT::SetAt
개체에서 CSimpleStringT
단일 문자를 설정합니다.
구문
void SetAt(int iChar, XCHAR ch);
매개 변수
iChar
개체에 있는 문자의 인덱스(0부터 시작하는 인덱스 CSimpleStringT
)입니다. 매개 변수는 iChar
0보다 크거나 같아야 하며 GetLength
.
ch
새 문자입니다.
설명
에 있는 iChar
문자를 덮어쓰려면 이 메서드를 호출합니다. 이 메서드는 기존 문자열의 범위를 초과하는 경우 iChar
문자열을 확대하지 않습니다.
예시
다음 예에서는 CSimpleStringT::SetAt
의 사용법을 보여줍니다.
CSimpleString s(_T("abcdef"), pMgr);
s.SetAt(1, _T('a'));
ASSERT(_tcscmp(s, _T("aacdef")) == 0);
CSimpleStringT::SetManager
개체의 메모리 관리자를 CSimpleStringT
지정합니다.
구문
void SetManager(IAtlStringMgr* pStringMgr);
매개 변수
pStringMgr
새 메모리 관리자에 대한 포인터입니다.
설명
개체에서 사용하는 새 메모리 관리자를 지정하려면 이 메서드를 호출합니다 CSimpleStringT
. 메모리 관리자 및 문자열 개체 에 대한 자세한 내용은 메모리 관리 및 CStringT
.
예시
다음 예에서는 CSimpleStringT::SetManager
의 사용법을 보여줍니다.
CSimpleString s(pMgr);
s.SetManager(pCustomMgr);
CSimpleStringT::SetString
개체의 문자열을 CSimpleStringT
설정합니다.
구문
void SetString(PCXSTR pszSrc, int nLength);
void SetString(PCXSTR pszSrc);
매개 변수
pszSrc
null로 끝나는 문자열에 대한 포인터입니다.
nLength
의 문자 수입니다 pszSrc
.
설명
개체에 문자열을 CSimpleStringT
복사합니다. SetString
버퍼의 이전 문자열 데이터를 덮어씁니다.
두 버전 SetString
모두 null 포인터인지 여부 pszSrc
와 null 포인터인지 여부 모두 오류를 throw합니다 E_INVALIDARG
.
매개 변수 1개 SetString
pszSrc
버전은 null로 끝나는 문자열을 가리킵니다.
두 매개 변수 버전 SetString
도 pszSrc
null로 끝나는 문자열이어야 합니다. null 종결자가 먼저 발생하지 않는 한 문자열 길이로 사용됩니다 nLength
.
두 매개 변수 버전도 현재 버퍼의 SetString
위치를 가리키는지 여부를 pszSrc
확인합니다 CSimpleStringT
. 이 특수한 경우 SetString
문자열 데이터를 버퍼에 다시 복사할 때 문자열 데이터를 덮어쓰지 않는 메모리 복사 함수를 사용합니다.
예시
다음 예에서는 CSimpleStringT::SetString
의 사용법을 보여줍니다.
CSimpleString s(_T("abcdef"), pMgr);
ASSERT(_tcscmp(s, _T("abcdef")) == 0);
s.SetString(_T("Soccer"), 6);
ASSERT(_tcscmp(s, _T("Soccer")) == 0);
CSimpleStringT::StringLength
지정된 문자열의 문자 수를 반환합니다.
구문
ATL_NOINLINE static int StringLength(PCXSTR psz) throw();
매개 변수
psz
null로 끝나는 문자열에 대한 포인터입니다.
Return Value
null 종결자를 계산하지 않는 문자 psz
수입니다.
설명
이 메서드를 호출하여 가리키는 문자열의 문자 수를 검색합니다 psz
.
예시
다음 예에서는 CSimpleStringT::StringLength
의 사용법을 보여줍니다.
ASSERT(CSimpleString::StringLength(_T("soccer")) == 6);
CSimpleStringT::Truncate
문자열을 새 길이로 자립니다.
구문
void Truncate(int nNewLength);
매개 변수
nNewLength
문자열의 새 길이입니다.
설명
문자열의 내용을 새 길이로 자르려면 이 메서드를 호출합니다.
참고 항목
이는 버퍼의 할당된 길이에 영향을 주지 않습니다. 현재 버퍼를 줄이거나 늘리려면 다음을 참조 FreeExtra
하세요 Preallocate
.
예시
다음 예에서는 CSimpleStringT::Truncate
의 사용법을 보여줍니다.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(_T("abcdefghi"), pMgr);
_tprintf_s(_T("String length: %d / Allocated length: %d\n"), str.GetLength(), str.GetAllocLength());
_tprintf_s(_T("Contents: %s\n"), (LPCTSTR)str);
str.Truncate(4);
_tprintf_s(_T("String length: %d / Allocated length: %d\n"), str.GetLength(), str.GetAllocLength());
_tprintf_s(_T("Contents: %s\n"), (LPCTSTR)str);
이 예제의 출력은 다음과 같습니다.
String length: 9 / Allocated length: 15
Contents: abcdefghi
String length: 4 / Allocated length: 15
Contents: abcd
CSimpleStringT::UnlockBuffer
개체의 버퍼를 잠금 해제합니다 CSimpleStringT
.
구문
void UnlockBuffer() throw();
설명
문자열의 참조 수를 1로 다시 설정하려면 이 메서드를 호출합니다.
CSimpleStringT
소멸자가 호출되면 버퍼가 잠기지 않도록 소멸자가 자동으로 호출 UnlockBuffer
됩니다. 이 메서드의 예제는 을 참조하세요 LockBuffer
.
CSimpleStringT::~CSimpleStringT
CSimpleStringT
개체를 제거합니다.
구문
~CSimpleStringT() throw();
설명
개체를 삭제하려면 이 메서드를 호출합니다 CSimpleStringT
.