차근차근/OpenCV

[VS2010]LPCTSTR에서 char*로 형 변환하기

예쁜꽃이피었으면 2014. 12. 3. 11:03

http://deios.kr/m/post/399


OpenCV를 가지고 놀고 있는데 이놈이 char *밖에 지원하지 않아서 고생이 많습니다.

소스도 있겠다 확 다 뜯어고쳐버릴까... 라고 생각은 했지만 막상 하려니 엄두가 나질 않네요...
이게 다 실력이 부족해서라는... ㄷㄷㄷ

MSDN도 찾아보고 이래저래 해봤지만 파일 경로등 특수문자 or 한글(유니코드)를 포함한 LPCTSTR은 char*형으로 쉽게 변환하지 못했습니다.

\는 짤라먹기 일수고 한글은 듣도보도 못한 한자 or 일어로 변환되버렸죠 ㅠㅠ

어쩌다가 찾은 LPCTSTR형을 char*형으로 변환하는 방법을 알려드리겠습니다.

먼저 소스부분에

USES_CONVERSION;

라고 적어줍니다.

선언된 곳으로 이동해보니 

#ifndef _DEBUG
    #define USES_CONVERSION int _convert; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw; (_lpw); LPCSTR _lpa; (_lpa)
#else
    #define USES_CONVERSION int _convert = 0; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw = NULL; (_lpw); LPCSTR _lpa = NULL; (_lpa)
#endif

이따구로 define되어있네요...

그리고 char*로 변환할 LPCTSRT변수를 W2A로 묶어줍니다.

이것도 선언된 곳으로 이동해보니

#define W2A(lpw) (\
    ((_lpw = lpw) == NULL) ? NULL : (\
        (_convert = (lstrlenW(_lpw)+1), \
        (_convert>INT_MAX/2) ? NULL : \
        ATLW2AHELPER((LPSTR) alloca(_convert*sizeof(WCHAR)), _lpw, _convert*sizeof(WCHAR), _acp))))

이따구로 define되어있습니다.

종합하면 이런 형식이 되겠죠?

USES_CONVERSION;
char *tmp = W2A(LPCTSTR문자열);


아... 헤더파일은

ctlconv.h   -> 나의 경우는..atlconv.h이렇게 했음.

입니다.

반응형

'차근차근 > OpenCV' 카테고리의 다른 글

surf의 매칭률 높이기(엉뚱한 매칭 포인트 줄이기)  (0) 2014.12.24
window8 + openCV 설치  (0) 2014.12.05
opencv 배경 제거 알고리즘  (0) 2014.10.07
openCV grabcut 배경제거  (0) 2014.10.07
배경제거  (0) 2014.10.07