2014-03-13 2 views
-2

나는 winapi 기능 CreateFile를위한 경로 LPCTSTR 경로로 씁니다. char[]LPCTSTR으로 변환하고 func에 전달하는 방법은 무엇입니까? 오후 8시 30 분 P.S. 나는 "이미 다른 테마를 봤어요 및char []을 LPCTSTR로 변환하는 방법?

+1

매우 오래된 버전의 Windows를 지원하지 않으려는 경우가 아니라면 T 버전이 아닌 다양한 버전을 사용하는 것이 좋습니다. – chris

+0

[http://social.msdn.microsoft.com/Forums/vstudio/en-US/b073d1cb-cb16-4956-b3ef-9021265f8efe/convert-char-to-lpctstr]? – Jayce

답변

3

LPCTSTR 유용한 아무것도 매크로가 const TCHAR*을 위해 거기 없다. TCHAR 여부 UNICODE에 따라 (비주얼 C의 이전 버전에서 unsigned short ++) char 또는 wchar_t 것 중 하나 정의된다. 당신은 몇 가지가 옵션 :

  1. TCHAR[] 대신 char[]의 사용 당신은 TEXTT 매크로를 사용할 수있는 문자열 리터럴이 그

  2. 않습니다..
  3. 정의하지 않음 UNICODE 과이드 문자 지원없이 프로젝트를 빌드하십시오. 반대로 정의 된 상태로두고 ANSI 대신 넓은 문자 집합을 사용할 수 있습니다.

  4. 단일 바이트에서 다중 바이트 문자 세트로 변환하십시오. 문자 집합과 변환 함수에 대한 자세한 내용은 here을 참조하십시오.

가 앞뒤로 옵션 대신 CreateFileW (또는 CreateFileA 당신의 욕망에 따라)를 사용하는 것입니다 CreateFile합니다 (UNICODE 프리 프로세서 플래그에 따라 앞서 언급 한 기능 중 하나에 매핑 것이다).

+2

그것은'char' 또는'wchar_t'입니다 –

+0

왜 새로운 코드에서 TCHAR 등을 사용하겠습니까? –

+0

@DavidHeffernan 그리고'wchar_t'는'unsigned short'에 대한 typedef입니다. (메모리가 작동하면 C++ 11의 기본 유형으로 추가됩니다.) (http://msdn.microsoft.com /en-us/library/dh8che7s.aspx)). –

2

(좁은 문자 버전을 명시 적으로 요구) char []을 직접 전달하면 캐스트가 필요 없습니다.

+0

그것은 작동합니다! 고맙습니다! – prozac631

+2

@prozac 이제 프로그램에 불충분 한 ANSI 문자 세트가 붙어 있습니다. 왜 그걸 너 자신에게 가하고 싶니? 우리 중 나머지는 ANSI를 경멸하는 것을 배우는 데 수년을 보냈습니다. 2014 년입니다. 세계의 모든 사람들이 영어를 구사하는 것은 아닙니다. –

+0

@David 그 선택은 이미'char'을 사용하여 만들어졌습니다. (음, 그것은 UTF8이 될 수 있지만 Windows는 매우 고통 스럽습니다.) –

관련 문제