CString

Programming/MFC 2013. 9. 13. 15:14 |


함수

CString::Compare

int CompareNoCase(

   PCXSTR psz

) const throw();

입력받은 문자열과 아스키코드로 비교하는 함수. 대소문자를 구분한다.

* 리턴값

문자열이 psz보다 작을 경우 -1

문자열이 psz와 같을 경우 0

문자열이 psz보다 큰 경우 1


CString::CompareNoCase

int CompareNoCase(

   PCXSTR psz

) const throw();

입력받은 문자열과 아스키코드로 비교해보는 함수. 대소문자를 구분하지 않는다.

* 리턴값

문자열이 psz보다 작을 경우 -1

문자열이 psz와 같을 경우 0

문자열이 psz보다 큰 경우 1


CString::Find

int Find(

   PCXSTR pszSub,

   int iStart=0

) const throw( );

int Find(

   XCHAR ch,

   int iStart=0

) const throw( );

문자 또는 문자열을 찾아 위치를 리턴해주는 함수. 0부터 시작한다.

iStart는 몇 번째 문자열부터 찾기 시작할 것인지를 지정하며,

입력하지 않을 경우 default값 0이 적용되여 처음부터 검색한다.

찾지 못했을 경우 -1을 리턴한다.


CString::GetBuffer

CString을 char형으로 변환해주는 함수. 버퍼 최소 크기를 인자로 넘겨준다.


ReleaseBuffer 함수와 같이 사용되며, GetBuffer 이후에 사용하여

남는 메모리가 있으면 사용할 수 있게 해준다.


CString::ReverseFind

int ReverseFind(

   XCHAR ch

) const throw();

입력한 문자를 검색해서, 가장 마지막으로 일치하는 위치를 리턴한다.

0부터 시작하며, 찾지 못했을 경우 -1을 리턴한다.




형변환

* CString -> const char*(LPCSTR)

const char *pData = (const char*)str;

CString 객체도 내부적으로 스트링을 저장할 수 있는 내부버퍼를 운용하고,

이 코드는 CString을 직접적으로 참조할 수 있게 연산자 오버로딩을 이용하여 간략하게 만들어놓은 인터페이스이다.


이 때 얻은 내부 버퍼의 포인터로 임의로 조작하게 되면 버그의 원인이 될 수도 있다고 한다.


CString::GetBuffer

내부 버퍼의 포인터를 얻음.

그러나 가변형태가 아닌 정적인 형태로 내부버퍼를 재할당해서 사용자에게 포인터를 넘겨주기 때문에

사용자가 직접적으로 핸들링해도 상관이 없다.


* 참고

- LPCSTR : CString의 내부 버퍼를 간단하게 직접적인 참조를 해야 할 필요가 있을 때 사용

- GetBuffer : 내부 버퍼에 어떤 조작을 직접적으로 가할 필요가 있을 때 사용











참고

Microsoft MSDN

[MFC] CString 클래스의 GetBuffer와 (LPCSTR)의 차이점


'Programming > MFC' 카테고리의 다른 글

Detected memory leaks!  (0) 2014.03.31
CDC::StretchBlt  (0) 2013.12.17
AfxMessageBox  (0) 2013.06.21
_BLOCK_TYPE_IS_VALID pHead nBlockUse  (0) 2013.03.04
windows user interface, MFC 총 정리  (0) 2012.12.21
Posted by HUEJI
: