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

입니다.

### 이 글 공유하기:

- [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/399/?share=facebook)
- [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/399/?share=x)
-

### 이것이 좋아요:

좋아하기로드 중...

### *관련*

### 관련된 글:

1. [Visual Studio 2010에서 OpenCV 이용하기](https://dworld.deios.kr/395/)
2. [모든 창 닫기 구현](https://dworld.deios.kr/405/)
3. [클립보드 기능 구현](https://dworld.deios.kr/406/)
4. [RGB 컬러 공간 분리 – 메뉴 기반 구현](https://dworld.deios.kr/407/)

## Similar Posts

- [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… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/398/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/398/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- 관련된 글: AcroEdit에서 C/C++ Compile 하기… RGB 컬러 공간 분리 – 메뉴 기반 구현 RGB 컬러 공간 분리 – 메뉴 기반 구현2 Android에서 ARToolkit 사용하기 ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/458/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/458/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/401/](https://dworld.deios.kr/401/) “Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)”에 이어 이번에는 파일 저장기능을 구현해 보도록 하겠습니다. 파일 열기는 OnOpenDocument()함수를 재정의 했던거 기억하시죠? 마찬가지로 파일 저장은 OnSaveDocument()함수를 재정의 하면 됩니다. 이젠 그림만 봐도 아시겠죠? return CDocument::OnSaveDocument(lpszPathName); 부분을 다음과 같이 수정합니다. USES_CONVERSION; return m_CvvImage.Save(W2A(lpszPathName)); 저번에도 말씀드렸지만 OpenCV 라이브러리가 char *형을 받기 때문에 W2A매크로를 사용해 줍니다. 이번에는 새… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/401/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/401/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- cfile28.uf.1804194F4F95B41B178B7C.pdf 관련된 글: 고속 네트워크 프로토콜의 목적과 수행과정 OpenCV 파일 저장기능 구현 MFC – Cam 영상 출력해보기 모덜리스(Modeless) Dialog로 변환하기 ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/462/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/462/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/430/](https://dworld.deios.kr/430/) 예전에 한번 했던거지만… ARToolkit 리빌드 기념으로 모토글램에 올려봤다… 뭐 역시… 일본인의 집념에 찬사를… 관련된 글: Visual Studio 2010에서 OpenCV 라이브러리 빌드하기 Cam 영상 출력해보기 영상 복원(Image Restoration) Wavelet Transform ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/430/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/430/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- 고속 네트워크 프로토콜중leaky bucket, flowspec, RSVP, policing, admission control 등의 유기적인 관계를 정확히 쓰시오(수행 과정, 목적 등) 과 모임을 위하여 술집을 예약하는 과정을 빗대어서 설명.Application은 Network에게 질적인 정보나 양적인 정보를 준다. 질적인 정보는 쉽게 명세가 가능하지만 양적인 정보는 쉽게 명세가 불가능하다. Application이 Network에게 주는 이러한 정보를 flowspec이라고 한다. flowspec은 흐름의 트래픽 특성(양적인 정보)을 묘사하는 부분과… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/370/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/370/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...

## 3 Comments

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

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