문자열 데이터 관리
Visual C++는 문자열 데이터를 관리하는 여러 가지 방법을 제공합니다.
문자열을 관리하기 위한 Win32 API 함수
유연하고 크기 조정 가능한 문자열 개체를 제공하는 MFC의 클래스 클래스
CStringT
클래스
CStringT
클래스 - MFC 독립적 문자열 개체와 동일한 기능을 제공합니다.CString
거의 모든 프로그램은 문자열 데이터로 작동합니다. 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
것에 대해 걱정할 필요가 없습니다).
CStrings
및 const 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::AllocSysString
및 CStringT::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
사용하지 않도록 설정하거나 사용하도록 설정할 수 있습니다.