CString
Programming/MFC 2013. 9. 13. 15:14 |함수
int CompareNoCase(
PCXSTR psz
) const throw();
입력받은 문자열과 아스키코드로 비교하는 함수. 대소문자를 구분한다.
* 리턴값
문자열이 psz보다 작을 경우 -1
문자열이 psz와 같을 경우 0
문자열이 psz보다 큰 경우 1
int CompareNoCase(
PCXSTR psz
) const throw();
입력받은 문자열과 아스키코드로 비교해보는 함수. 대소문자를 구분하지 않는다.
* 리턴값
문자열이 psz보다 작을 경우 -1
문자열이 psz와 같을 경우 0
문자열이 psz보다 큰 경우 1
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 이후에 사용하여
남는 메모리가 있으면 사용할 수 있게 해준다.
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 : 내부 버퍼에 어떤 조작을 직접적으로 가할 필요가 있을 때 사용
참고
[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 |