CString
인수 전달
이 문서에서는 함수에 개체를 전달하는 CString
방법과 함수에서 개체를 반환 CString
하는 방법을 설명합니다.
CString
인수 전달 규칙
클래스 인터페이스를 정의할 때 멤버 함수에 대한 인수 전달 규칙을 결정해야 합니다. 개체를 전달하고 반환하기 위한 몇 가지 표준 규칙이 있습니다 CString
. 문자열에서 함수 입력으로 설명된 규칙을 따르고 문자열을 함수 출력으로 사용하는 경우 효율적이고 올바른 코드를 갖게 됩니다.
함수 입력으로 문자열
호출된 함수에서 개체를 CString
사용하는 가장 효율적이고 안전한 방법은 개체를 CString
함수에 전달하는 것입니다. 이름에도 불구하고 개체는 CString
내부적으로 종결자가 있는 C 스타일 문자열로 문자열을 NULL
저장하지 않습니다. 대신 개체가 CString
가진 문자 수를 주의 깊게 추적합니다. CString
종료된 문자열에 LPCTSTR
대한 포인터를 NULL
제공하는 것은 코드에서 지속적으로 수행해야 하는 경우 중요해질 수 있는 적은 양의 작업입니다. 내용이 변경되면 포인터의 LPCTSTR
이전 복사본이 CString
무효화되므로 결과는 일시적입니다.
경우에 따라 C 스타일 문자열을 제공하는 것이 좋습니다. 예를 들어 호출된 함수가 C로 작성되고 개체를 지원하지 않는 상황이 있을 수 있습니다. 이 경우 매개 변수를 CString
강제 변환 LPCTSTR
하고 함수는 C 스타일 NULL
종결 문자열을 가져옵니다. C 스타일 문자열 매개 변수를 CString
허용하는 생성자를 사용하여 CString
다른 방향으로 이동하여 개체를 만들 수도 있습니다.
함수에 의해 문자열 내용을 변경하려면 매개 변수를 비규격 CString
참조(CString&
)로 선언합니다.
함수 출력으로 문자열
일반적으로 개체는 기본 형식과 같은 값 의미 체계를 따르기 때문에 CString
함수에서 개체를 반환 CString
할 수 있습니다. 읽기 전용 문자열을 반환하려면 상수 CString
참조(const CString&
)를 사용합니다. 다음 예제에서는 매개 변수 및 반환 형식의 CString
사용을 보여 줍니다.
class CName : public CObject
{
private:
CString m_firstName;
TCHAR m_middleInit;
CString m_lastName;
public:
CName() {}
void SetData(LPCTSTR fn, const TCHAR mi, LPCTSTR ln)
{
m_firstName = fn;
m_middleInit = mi;
m_lastName = ln;
}
void GetData(CString& cfn, TCHAR& mi, CString& cln)
{
cfn = m_firstName;
mi = m_middleInit;
cln = m_lastName;
}
CString GetLastName()
{
return m_lastName;
}
};
CName name;
CString last, first;
TCHAR middle;
name.SetData(_T("John"), 'Q', _T("Public"));
ASSERT(name.GetLastName() == _T("Public"));
name.GetData(first, middle, last);
ASSERT((first == _T("John")) && (last == _T("Public")));