superkind
6/29/2018 - 6:55 AM

MFC 문자열

#mfc #string

MFC 문자열

문자열 접두어

  • LP(Long Pointer): .net에서는 64비트 포인터, VC++ 6.0 이하에서는 32비트 포인터를 나타냄
  • C(constant): 함수 내부에서 인자값을 변경하지 말라는 뜻
  • STR: string자료이지만 내부적으론느 char형 배열에 null값 종료를 의미
  • T(t_char): 운영체제가 multi-byte환경이면, char형으로, unicode환경이면, w_char, wide char형으로 type casting
  • W (wide char): 유니코드를 의미
LPSTR = long pointer string = char *
LPCSTR = long pointer constant string = const char *
LPCTSTR = long pointer constant t_string = const tchar *
LPWSTR = long pointer wide string = w_char *
LPCWSTR = long pointer constant wide string = const w_char *
LPCTSTR = long pointer constant t_string = const tchar *

(LPSTR)(LPCTSTR)

(LPSTR)(LPCTSTR)myString

그냥 (LPSTR)CString을 하면 CString형 자료의 맨 처음 주소부터 char* 형으로 반환된다.

그러나 CString형은 앞의 16byte를 자료형을 표현하기 위해 사용하기 때문에, 여기서부터 형변환을 해주면 엉뚱한 값이 표현되게 된다.

따라서 MFC에서 지원하는 CString class는 LPCTSTR라는 함수를 통해서 일단 안전하게 const char * 형으로 바뀐 자료형을 얻어오게 한다. 그리고 한번 더 LPSTR을 해주어 type casting을 한다.