오전 10:36 2004-01-06
조경민 bro@shinbiro.com
UNICODE와 CString
=======================================================

CString::GetLength()는 A count of the bytes in the string.
라고 써있지만 UNICODE에서도 _T("hello")는 5를 리턴한다.

int mem_len = _tcslen( (LPCTSTR)s )*sizeof(TCHAR)+sizeof(TCHAR);
하면 실제 사이즈를 얻을 수 있을것이다.

CString s;
s.GetBufferSetLength( 10 );
를 하면 MBCS에서 UNICODE에서 각각 11 , 22 바이트를 할당하는 것을
의미한다 null을 포함하지 않는 문자열의 길이를 넣게 되어 있다.

_tcscpy( s, _T("hello") );

s.GetLength() == 10

s.ReleseBuffer();
를 하면 정확한 버퍼의 길이로 재조정된다.
s.GetLength() == 5

헷갈리면 GetLength()와 GetBuffer 류 사용보다는 직접 문자열 계산을
하는 것이 날듯하다.

+ Recent posts