다음을 통해 공유


문자열 데이터 관리

Visual C++는 문자열 데이터를 관리하는 여러 가지 방법을 제공합니다.

거의 모든 프로그램은 문자열 데이터로 작동합니다. MFC의 CString 클래스는 유연한 문자열 처리를 위한 최상의 솔루션인 경우가 많습니다. 버전 7.0 CString 부터 MFC 또는 MFC 독립적 프로그램에서 사용할 수 있습니다. 런타임 라이브러리와 CString 모두 유니코드 또는 MBCS 프로그래밍에서와 같이 멀티바이트(와이드) 문자를 포함하는 문자열을 지원합니다.

이 문서에서는 클래스 라이브러리가 문자열 조작과 관련하여 제공하는 범용 서비스에 대해 설명합니다. 이 문서에서 다루는 항목은 다음과 같습니다.

클래스 클래스는 CStringT 문자열 조작을 지원합니다. C 런타임 라이브러리 문자열 패키지에서 일반적으로 제공하는 기능을 대체하고 확장하기 위한 것입니다. 이 클래스는 CString Basic에 있는 것과 유사하게 간단한 문자열 처리를 위한 멤버 함수 및 연산자를 제공합니다. 또한 클래스는 s 및 표준 C++ 문자열 데이터 형식을 생성, 할당 및 비교하기 CString위한 생성자 및 연산자를 제공합니다. CString 파생되지 CObject않으므로 대부분의 MFC(Microsoft Foundation Class Library)와 독립적으로 개체를 사용할 CString 수 있습니다.

CString 개체는 "값 의미 체계"를 따릅니다. 개체는 CString 고유한 값을 나타냅니다. 문자열에 대한 포인터가 CString 아니라 실제 문자열로 간주합니다.

CString 개체는 가변 문자 수의 시퀀스를 나타냅니다. CString 개체는 문자 배열로 간주할 수 있습니다.

유니코드 및 MBCS는 이식성을 제공합니다.

MFC 버전 3.0 이상을 사용하면 MBCS(유니코드 및 멀티바이트 문자 집합) 둘 다에 대해 MFC(포함 CString)가 활성화됩니다. 이 지원을 사용하면 유니코드 또는 ANSI 문자에 대해 빌드할 수 있는 이식 가능한 애플리케이션을 더 쉽게 작성할 수 있습니다. 이 이식성을 사용하도록 설정하기 위해 개체의 각 문자 CString 는 애플리케이션을 빌드할 때 기호 _UNICODE 를 정의하는 것처럼 wchar_t 정의되거나 그렇지 않은 것처럼 char 정의되는 형식TCHAR입니다. wchar_t 문자 너비는 16비트입니다. 정의된 기호 _MBCS 를 사용하여 빌드하는 경우 MBCS를 사용할 수 있습니다. MFC 자체는 기호(NAFX 라이브러리용) 또는 _UNICODE 정의된 기호(UAFX 라이브러리용)를 사용하여 빌드 _MBCS 됩니다.

참고 항목

이 예제와 문자열에 대한 관련 문서에서는 CString 리터럴 문자열을 폼으로 변환하는 매크로를 사용하여 _T 유니코드 이식성을 위해 올바르게 형식이 지정된 리터럴 문자열을 보여 줍니다.

L"literal string"

참고 항목

컴파일러가 유니코드 문자열로 처리합니다. 예를 들어, 다음 코드는

CString strName = _T("Name");   

참고 항목

은 정의된 경우 _UNICODE 유니코드 문자열로 변환되거나 그렇지 않은 경우 ANSI 문자열로 변환됩니다. 자세한 내용은 유니코드 및 MBCS(멀티바이트 문자 집합) 지원 문서를 참조하세요.

개체는 CString 최대 INT_MAX (2,147,483,647자) 문자를 저장할 수 있습니다. TCHAR 데이터 형식은 개체 내에서 CString 개별 문자를 얻거나 설정하는 데 사용됩니다. 문자 배열과 달리 클래스에는 CString 기본 제공 메모리 할당 기능이 있습니다. 이렇게 하면 개체가 CString 필요에 따라 자동으로 증가할 수 있습니다(즉, 더 긴 문자열에 맞게 개체를 늘리는 CString 것에 대해 걱정할 필요가 없습니다).

CStringsconst char 포인터

또한 개체는 CString 리터럴 C 스타일 문자열처럼 작동할 수 있습니다( PCXSTR유니코드 아래에 없는 경우와 동일 const char* ). CSimpleStringT::operator PCXSTR 변환 연산자를 CString 사용하면 함수 호출에서 개체를 문자 포인터로 자유롭게 대체할 수 있습니다. CString(LPCWSTR pszSrc) 생성자를 사용하면 문자 포인터를 개체로 대체할 CString 수 있습니다.

개체를 접 CString 으려고 시도하지 않습니다. 예를 들어 두 CString 개체를 Chicago포함하는 경우 문자 Chicago 는 두 위치에 저장됩니다. (이후 버전의 MFC에서는 그렇지 않을 수 있으므로 MFC에 의존해서는 안 됩니다.)

참고 항목

문자에 CSimpleStringT::GetBuffer 대한 비규격 포인터로 직접 액세스 CString 해야 하는 경우 및 CSimpleStringT::ReleaseBuffer 멤버 함수를 사용합니다.

참고 항목

CStringT::AllocSysStringCStringT::SetSysString 멤버 함수를 사용하여 Automation(이전의 OLE Automation)에 사용된 개체를 할당하고 설정합니다BSTR.

참고 항목

가능한 경우 힙이 아닌 프레임에 개체를 할당 CString 합니다. 이렇게 하면 메모리가 저장되고 매개 변수 전달이 간소화됩니다.

개체는 확실히 컬렉션에 요소로 저장할 수 있지만 CString 클래스는 CString Microsoft Foundation 클래스 라이브러리 컬렉션 클래스로 구현되지 않습니다.

CString 참조 계산

MFC 버전 4.0 CStringT 을 기준으로 클래스 개체가 복사되면 MFC는 데이터를 복사하는 대신 참조 수를 증분합니다. 이렇게 하면 값별로 매개 변수를 전달하고 값별로 개체를 반환하는 것이 CString 더 효율적입니다. 이러한 작업으로 인해 복사 생성자가 호출될 수 있으며 경우에 따라 두 번 이상 호출됩니다. 참조 수를 증분하면 이러한 일반적인 작업에 대한 오버헤드가 줄어들고 더 매력적인 옵션을 사용할 CString 수 있습니다.

각 복사본이 제거되면 원래 개체의 참조 수가 감소합니다. 원래 CString 개체는 참조 수가 0으로 줄어들 때까지 제거되지 않습니다.

멤버 함수를 CString 사용하고 참조 계산을 CSimpleStringT::LockBuffer CSimpleStringT::UnlockBuffer 사용하지 않도록 설정하거나 사용하도록 설정할 수 있습니다.

참고 항목

일반 MFC 항목