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 . 메모리 관리 및 메모리 관리에 대한 IAtlStringMgrCSimpleStringT자세한 내용은 메모리 관리 및 .CStringT

설명

CSimpleStringT 개체를 생성합니다. 생성자는 입력 데이터를 할당된 새 스토리지에 복사하므로 메모리 예외가 발생할 수 있습니다.

예시

다음 예제에서는 ATLtypedefCSimpleString을 사용하여 사용하는 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전달하고 ReleaseBufferstrlen 버퍼에서 해당 길이를 확인합니다.

참조 계산에 대한 자세한 내용은 다음 문서를 참조하세요.

예시

다음 예에서는 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 하고 매개 변수 nMinBufferLengthGetBuffer 현재 버퍼의 길이보다 크게 설정하면 버퍼 잠금이 손실됩니다. 이러한 호출은 GetBuffer 현재 버퍼를 삭제하고, 요청된 크기의 버퍼로 바꾸고, 참조 횟수를 0으로 다시 설정합니다.

참조 계산에 대한 자세한 내용은 다음 문서를 참조하세요.

예시

다음 예에서는 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개 SetStringpszSrc 버전은 null로 끝나는 문자열을 가리킵니다.

두 매개 변수 버전 SetStringpszSrc null로 끝나는 문자열이어야 합니다. null 종결자가 먼저 발생하지 않는 한 문자열 길이로 사용됩니다 nLength .

또한 두 매개 변수 버전의 SetString 검사 현재 버퍼CSimpleStringT의 위치를 가리키는지 여부를 pszSrc 나타냅니다. 이 특수한 경우 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 .

참고 항목

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