---
title: "[VS2010]LPCTSTR에서 char*로 형 변환하기"
id: "652"
type: "post"
slug: "399"
published_at: "2010-12-29T15:44:25+00:00"
modified_at: "2010-12-29T15:44:25+00:00"
url: "https://dworld.deios.kr/399/"
markdown_url: "https://dworld.deios.kr/399.md"
excerpt: "OpenCV를 가지고 놀고 있는데 이놈이 char *밖에 지원하지 않아서 고생이 많습니다. 소스도 있겠다 확 다 뜯어고쳐버릴까… 라고 생각은 했지만 막상 하려니 엄두가 나질 않네요… 이게 다 실력이 부족해서라는… ㄷㄷㄷ MSDN도 찾아보고 이래저래 해봤지만 파일 경로등 특수문자 or 한글(유니코드)를 포함한 LPCTSTR은..."
taxonomy_category:
  - "Study"
taxonomy_post_tag:
  - "vs 2010"
---

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
```

입니다.

### 관련된 글:

1. [Visual Studio 2010에서 OpenCV 라이브러리 빌드하기](https://dworld.deios.kr/398/)
2. [Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기](https://dworld.deios.kr/400/)
3. [OpenCV 파일 저장기능 구현](https://dworld.deios.kr/401/)
4. [RGB 컬러 공간 분리 – 메뉴 기반 구현2](https://dworld.deios.kr/408/)

## Similar Posts

- 관련된 글: 고속 네트워크에서의 메모리 병목 현상 TCP 폭주(혼잡)제어 Drag and Drop 지원하기 Face Detect
- [https://dworld.deios.kr/407/](https://dworld.deios.kr/407/) 이번에는 본격적으로 OpenCV를 사용하여 영상처리를 해 보겠습니다. 그 첫 단계로 메뉴기반 정지영상 처리를 해 볼 것이며, cvSplit함수를 사용하여 RGB 컬러공간을 분리하는 예제를 구현해 보겠습니다. 먼저 OpenCV 2.1 C API Reference에서 cvSplit함수를 찾아보면 다음과 같습니다. cvSplit함수는 다중 채널(Multi-channel)배열을 여러 개의 단일 채널(Single-channel) 배열로 분할하거나, 배열에서 단일 채널을 추출 할 수 있음을 알 수 있습니다. 또한,…
- [https://dworld.deios.kr/421/](https://dworld.deios.kr/421/) 이전 시간에 만들었던 모달(Modal) Dialog를 모덜리스(Modeless) Dialog로 변환해 보겠습니다. Modal Dialog는 Dialog가 실행되는 동안 다른 작업을 하지 못하고, Modeless Dialog는 프로그램 실행 흐름을 방해하지 않는다는 것 정도는 알고 계시죠? 자 그럼 이전 시간 “MFC – Cam 영상 출력해보기(http://deios.kr/420)”에 만들었던 View Dialog를 멋지게 바꿔 보겠습니다. OnCamView함수를 다음과 같이 수정합니다. void CMFC_OpenCVApp::OnCamView() { // TODO: 여기에 명령…
- [https://dworld.deios.kr/398/](https://dworld.deios.kr/398/) 저번에 해봤던 “Visual Studio 2010에서 OpenCV 이용하기(http://deios.kr/395)”에서는 디버그 모드로 이용이 불가능한 문제가 있었습니다. 그래서 이 번에는 직접 OpenCV 2.1 라이브러리를 빌드해 보도록 하겠습니다. 먼저 CMake를 다운받습니다. CMake는 크로스 플렛폼 Make네요. http://www.cmake.org/cmake/resources/software.html 설치는 별 다른게 없습니다. 그냥 다음 연타로 CMake를 설치해 줍니다. 다음으로 OpenCV 2.1 Windows Version을 다운받고, 적당한 곳에 압축을 풀어 줍니다. http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/OpenCV-2.1.0-win.zip/download…
- [https://dworld.deios.kr/405/](https://dworld.deios.kr/405/) 이번 시간에는 열려있는 모든 창을 닫는 기능을 구현해 보도록 하겠습니다. 먼저 리소스 뷰를 보기 좋게 꺼내어 두는게 좋겠죠? [보기] → [다른 창] → [리소스 뷰]를 클릭합니다. 이번엔 메뉴 바에 해당 기능을 추가할 예정입니다. 리소스 뷰에서 [Menu] → [IDR_*TYPE]을 선택한 후 그림과 같이 지정합니다. Caption : 모든 창 닫기 ID : ID_FILE_CLOSE_ALL Prompt : 열려진…
- [https://dworld.deios.kr/408/](https://dworld.deios.kr/408/) 이번에는 지난 시간에 해 봤던 “RGB 컬러 공간 분리 – 메뉴 기반 구현(http://deios.kr/407)”의 새 창으로 여는 부분을 조금 더 일반화 하고, MFC에 적합하게 만들어 보겠습니다. 먼저 새 창으로 이미지를 여는 전역 함수를 작성해 보겠습니다. App Class의 헤더 파일을 열어 가장 마지막에 다음과 같이 추가해 줍니다. void OpenByNewDocument(LPTSTR szTitle, IplImage * image); 이 전역 함수는…

## 3 Comments

1. 좋은정보 감사합니다. 퍼갈겠습니당~ [답글](#comment-200)
2. 오! 감사합니다~~ [답글](#comment-201)
3. 오! 감사합니다~~ [답글](#comment-202)

### 답글 남기기 [응답 취소](/399/?t=1792036973#respond)
