다음을 통해 공유


C 스타일 문자열과 관련 된 CString 작업

A CString 개체는 문자열 데이터를 포함 합니다.CString집합이 상속 되는 메서드 및 연산자 클래스 템플릿에 정의 CStringT 문자열 데이터에.(CString 되는 typedef 는 전문 CStringT 문자 데이터의 종류와 작동 하는 CString 지원.)

CString문자 데이터는 내부적으로 C 스타일 null로 끝나는 문자열로 저장 하지 않습니다.대신 CString 데이터와 필요한 공간에 보다 안전 하 게 볼 수 있도록 문자 데이터의 길이 추적 합니다.

CStringC 스타일 문자열이 허용 하지 및 문자 데이터를 C 스타일 문자열로 액세스 방법을 제공 합니다.이 여기서 사용 하는 방법을 설명 합니다. 다음 섹션에서는 포함 된 CString C 스타일의 null로 끝나는 문자열 처럼 개체.

  • C 스타일의 null로 끝나는 문자열을 변환합니다.

  • 표준 런타임 라이브러리 문자열 함수 작업

  • Cstring의 내용을 직접 수정

  • 가변 인수 함수에 CString 개체를 사용 하 여

  • CString 형식 매개 변수를 지정합니다.

Cstring을 C-스타일으로 Null로 끝나는 문자열을 사용 하 여

사용 하는 CString 개체를 C 스타일 문자열로, 개체를 캐스팅할 LPCTSTR.다음 예에서는 CString 읽기 전용 C 스타일 null로 끝나는 문자열에 대 한 포인터를 반환 합니다.strcpy 함수에 변수 C 스타일 문자열의 복사본이 배치 myString.

    CString aCString = "A string";
    char myString[256];
    strcpy(myString, (LPCTSTR)aString);

사용할 수 있습니다 CString 방법, 예를 들어, SetAt, string 개체에 개별 문자를 수정할 수 있습니다.그러나는 LPCTSTR 포인터는 임시적 이며 모든 변경 되 면 무효화 됩니다 CString.CString 범위를 벗어난 이동 하 고 자동으로 삭제 합니다.새로 얻을 것이 좋습니다 LPCTSTR 의 포인터는 CString 때마다 개체 하나를 사용 합니다.

때로는 사본을 해야 CString 데이터를 직접 수정할 수 있습니다.보안된 함수 사용 strcpy_s (또는 유니코드/MBCS 노트북 _tcscpy_s) 복사 하는 CString 개체는 별도 버퍼에.이 안전 하 게 문자를 수정할 수 있습니다, 다음 예제에서와 같이입니다.

CString theString(_T("This is a test"));
int sizeOfString = (theString.GetLength() + 1);
LPTSTR lpsz = new TCHAR[sizeOfString];
_tcscpy_s(lpsz, sizeOfString, theString);
//... modify lpsz as much as you want   

[!참고]

세 번째 인수에 strcpy_s (또는 유니코드/MBCS 노트북 _tcscpy_s) 하나를 constwchar_t* (유니코드) 또는 constchar* (ANSI).패스 위의 예는 CString 이 인수에 대 한.C + + 컴파일러에 대 한 정의 변환 함수를 자동으로 적용은 CString 변환 하는 클래스는 CString 에 LPCTSTR.다른 형식에서 캐스팅 작업을 정의 하는 기능을 C++의 가장 유용한 기능 중 하나입니다.

표준 런타임 라이브러리 문자열 함수 작업

찾을 수 있는 CString 수 있습니다 고려 같은 표준 C 런타임 라이브러리 문자열 함수를 사용 하는 문자열 작업을 수행 하는 메서드 strcmp (또는 유니코드/MBCS 노트북 _tcscmp).

C 런타임 문자열 함수를 사용 해야 하는 경우에 설명 된 기술을 사용할 수 있습니다 C-Style Null-Terminated 문자열 변환_core_using_cstring_as_a_c.2d.style_null.2d.terminated_string.복사할 수 있는 CString 개체는 해당 하는 C 스타일 문자열 버퍼로, 버퍼를 켜고 다시 결과 C 스타일 문자열을 지정 하면 작업을 수행는 CString 개체.

Cstring의 내용을 직접 수정

대부분의 상황에서 사용 해야 CString 의 내용을 수정 하는 멤버 함수는 CString 개체 또는 변환 하는 CString C 스타일 문자열을.

직접 수정 하는 것이 수 있는 일부의 경우가 있는 CString 문자 버퍼를 필요로 하는 운영 체제 함수를 사용할 때를 목차, 예를 들어.

GetBufferReleaseBuffer 메서드에 제공의 문자를 내부 버퍼에 액세스는 CString 개체와 직접 수정할 수 있습니다.다음 단계는이 목적을 위해 이러한 함수를 사용 하는 방법을 보여 줍니다.

GetBuffer 및 ReleaseBuffer 내부 문자 버퍼 CString 개체를 액세스할 수 있도록

  1. 호출 GetBufferCString 개체와 필요한 버퍼의 길이 지정 합니다.

  2. 반환한 포인터를 사용 GetBuffer 에 직접 문자를 쓸 수 있는 CString 개체입니다.

  3. 호출 ReleaseBuffer 에 있는 CString 개체가 모든 내부 업데이트를 CString 상태 정보, 예를 들어, 문자열의 길이.내용을 수정한 후에 CString 직접 호출 해야 개체 ReleaseBuffer 기타를 호출 하기 전에 CString 멤버 함수.

가변 인수 함수에 CString 개체를 사용 하 여

일부 C 함수 인수의 변수 번호를 취하.눈에 띄는 때 printf_s.이러한 종류의 함수를 선언 하는 방식 때문에 컴파일러의 형식 인수를 확인할 수 없습니다 및 각 인수에 대해 수행할 변환 작업을 확인할 수 없습니다.따라서 명시적 형식을 전달 하는 경우 캐스트를 사용 하는 것이 필수적입니다에 CString 가변 개수의 인수를 사용 하는 함수 개체입니다.

사용 하는 CString 개체에 명시적으로 캐스팅 하는 가변 인수 함수는 CStringLPCTSTR 다음 예제와 같이 문자열입니다.

CString kindOfFruit = _T("bananas");
int howmany = 25;
_tprintf_s(_T("You have %d %s\n"), howmany, (LPCTSTR)kindOfFruit);    

CString 형식 매개 변수를 지정합니다.

문자열 인수가 필요한 대부분의 기능을 함수 프로토타입으로 형식 매개 변수를 지정 하는 것이 좋습니다 있는 const 문자 포인터 (LPCTSTR) 대신에 CString.때 형식 매개 변수 지정으로 const 문자 포인터를 포인터를 전달할 수는 TCHAR배열 리터럴 문자열 "hi there", 또는CString 개체.CString 개체가 자동으로 변환 됩니다는 LPCTSTR.사용할 수 있는 곳은 LPCTSTR을 사용할 수도 있습니다는 CString 개체.

상수 문자열 참조 형식 매개 변수를 지정할 수도 있습니다 (즉, constCString&)의 인수를 수정 하면 됩니다.삭제는 const 한정자 문자열 함수에 의해 수정 하면 됩니다.기본 null 값이 필요 하면 초기화에 null 문자열 "", 아래와 같이 합니다.

void AddCustomer(const CString& name, const CString& address, 
   const CString& comment = _T(""));

대부분의 함수 결과 단순히 반환은 CString 개체 값.

참고 항목

개념

CString 인수 전달

기타 리소스

문자열 (ATL/MFC)