MFC

[MFC] TCHAR에 관하여

Dongjun_ 2019. 1. 22. 10:32

- TCHAR 란?

1. MS(microsoft 이하 마소)에서 전세계의 언어에 맞춰 개발하는 것이 짜증남.

2. windows를 unicode 기반으로 개발하기 시작.

3. char 와 wide char 의 크기 차이가 발생 ( 1byte : 2byte )

( 포인터 연산을 많이 하는 c, c++ 에서 치명적 )

4. 컴파일러가 precompile option을 기준으로 동작하도록 새로운 변수 모양의 Macro를 선언

-> 요것이 바로 TCHAR, t_char 인 것이다!

 - type casting

multi-byte : char

unicode : w_char, wide char

 

MFC 기반 CString

 

 - CString to TCHAR 형 변환

// 선언
CString cstr;

// 형 변환
TCHAR* tchr = (TCHAR*)(LPCTSTR)cstr;

// 풀이

(CString) -> (Long Pointer Constant t_String) -> (Long Pointer t_String) = TCHAR*

 

 

 - TCHAR to CString 형 변한

// 선언
TCHAR *tchr = _T("");

// 형 변환
CString strString;
1. strString.Format("%s", tchr);
2. strString = (LPCTSTR)tchr;

 

-- 추가 --

 - CString to std::string 형 변환

CString cstr;
1. std::string str = std::string(cstr);
2. std::string str(cstr);

 

 - std::string to CString 형 변환

std::string str;
CString cstr = str.c_str();

 

-- 실전 --

typedef std::basic_string<TCHAR> tstring;

int main() {
    tstring temp = _T("temp").c_str();
}

 

-- 여담 --

BSD 코딩 스타일을 선호 하는데 티스토리 코드블럭에선 K&S 스타일이 보기 좋네...

 

LPCTSTR

 

LP, T, C, STR 등에 대하여

LPSTR, LPCSTR, LPTSTR, LPCTSTR, LPWSTR, LPCWSTR등 너무 많다. -- 서론 -- C, C++ 은 String 자료 구조형 자체를 지원하지 않는다고 한다. (compiler 차원에서) String을 어떻게 사용할지 고민한 결과 : 64bit pointerVC++6.0

kim-dj.tistory.com

 

반응형

'MFC' 카테고리의 다른 글

char, wchar, tchar 에 대해서  (0) 2019.01.22
LP, T, C, STR 등에 대하여  (0) 2019.01.22