# 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): 유니코드를 의미
```cpp
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)`
```c++
(LPSTR)(LPCTSTR)myString
```
그냥 (LPSTR)CString을 하면 CString형 자료의 맨 처음 주소부터 char* 형으로 반환된다.
그러나 CString형은 앞의 16byte를 자료형을 표현하기 위해 사용하기 때문에,
여기서부터 형변환을 해주면 엉뚱한 값이 표현되게 된다.
따라서 MFC에서 지원하는 CString class는 LPCTSTR라는 함수를 통해서 일단 안전하게
const char * 형으로 바뀐 자료형을 얻어오게 한다. 그리고 한번 더 LPSTR을 해주어
type casting을 한다.