이 작업을 시도했지만이 방법이 없습니다. 나는 창문에 익숙하지 않기 때문에 이것을 묻습니다. stl-string을 시도했지만 Visual Studio 2008-은 stl-wstring-handling에서 버그를 누적합니다. 나는 나중에 그 문제에 대해 많은 질문을 할 것이다. 이제 누가이 문제에 대해 밝힐 수 있습니까?vC++ - CString을 LPCWSTR로 변환하는 방법
답변
이 응용 프로그램이 이미 (이 경우, 단지 직접 캐스트) 유니 코드로 설정되지 않은 가정을 수행해야합니다 당신이 다음 정의 UNICODE,_UNICODE
컴파일러 플래그가있는 경우
CString str("Hello, world!");
CStringW strw(str);
LPCWSTR ptr = strw;
은 간단한 할당이 작동합니다. _MBCS
을 정의한 경우 MultiByteToWideChar 방법을 사용해야합니다.
MFC에서 지나치게 복잡합니다. 제안 된대로 CStringW를 사용하거나 적절한 Cx2y 클래스를 사용하십시오. –
'CString'에 변환 코드가 있습니다. ANSI로 인코딩 된 문자열에서 와이드 문자열이 필요하다면,'CStringW wideString (narrowString);'을 실행하면됩니다. 여기서'narrowString'은'CStringA' 타입입니다. – IInspectable
T2W() 매크로를 사용하여 여러 줄의 MultiByteToWideChar 코드를 쓰지 않아도됩니다.
이전 T- 매크로 대신 Cx2y 클래스를 사용하는 것이 더 좋습니다. –
FuncTakingLPCWSTR(CT2CW(cstring_var))
과 같은 변환 클래스 CT2CW를 사용하십시오. 이는 유니 코드 또는 MBCS 빌드에서 작동하는 것이 보장됩니다.
또한 함수에 전달 된 문자열은 임시 일 수 있으므로 나중에 사용하기 위해 저장하지 마십시오.
reference : http://msdn.microsoft.com/en-us/library/87zae4a3%28VS.80%29.aspx – Inverse
가장 쉬운 방법은에서 정의 된 MFC 문자열 변환 매크로를 사용하는 것입니다
는http://msdn.microsoft.com/en-us/library/87zae4a3%28VS.80%29.aspx
예를 들어, 매크로는 CString
에 LPCWSTR
이 CT2W(s)
입니다 변환 할 수 있습니다.
또 다른 방법은 특수한 CStringA
및 CStringW
클래스를 사용하는 것입니다. 이들은 UNICODE
플래그로 컴파일 중인지에 따라 CString
의 해당 ascii와 넓은 버전입니다. 그래서 당신은 사용할 수 있습니다 :
CString your_string = "blah"
CStringW wide_string = your_string;
문자열의 넓은 버전을 얻으려면.
LPCWSTR pstr;
CString cstrTemp;
...
pstr = cstrTemp.AllocSysString();
AllocSysString은 LSTRWSTR로 직접 변환 할 수있는 BSTR 유형 문자열을 반환합니다.
'BSTR'은'LPCWSTR'로 변환 될 수 없습니다. 두 문자열 유형은 서로 다른 의미를가집니다. 예를 들어,'nullptr'은 항상 유효한'BSTR'입니다. 'LPCWSTR'은 어떠한 보증도하지 않습니다. 게다가,'BSTR'은'SysFreeString'을 호출하여 정리되어야합니다. 코드에이 내용이 표시되지 않으며 사용자의 설명에도이 내용이 표시되지 않습니다. OP가 ** const ** 포인터를 요구하기 때문에 복사가 필요하지 않을 가능성이 있습니다. 이 경우 내장 연산자'LPCTSTR()'만으로도 충분할 수 있습니다. 그리고 정말로, 당신이'BSTR'을 필요로하지 않는다면, 당신이 그 밖에 무엇을 해야할지 모르기 때문에 이것을 사용하지 마십시오. 미안, -1. – IInspectable
- 1. cstring을 NSString 및 NSString으로 변환하는 방법 cstring?
- 2. Byte *를 wince6.0의 LPCWSTR로 변환하는 방법은 무엇입니까?
- 3. MFC (VC++)에서 CString을 Enum 형식으로 변환 하시겠습니까?
- 4. CString을 C++의 CTime으로 변환하는 방법은 무엇입니까?
- 5. 이 VC++ 6 코드를 VC++ 2008로 변환하는 방법?
- 6. 문제점 : CString을 C++ MFC의 const char *로 변환하는 방법
- 7. 델파이에서 cstring을 전달하는 방법
- 8. 여러 CString을 연결하는 방법
- 9. char *를 VC++의 LPWSTR로 변환하는 방법?
- 10. CString을 문자 배열로 변환 하시겠습니까?
- 11. 부스트를 사용하여 CString을 직렬화하는 방법
- 12. vC++ (예 : IListPtr) 포인터를 std :: list로 변환하는 방법?
- 13. 에서 jpeg 파일에 바이트 *로 변환하는 방법 VC++
- 14. PUNICODE_STRING을 bstr으로 변환하는 방법?
- 15. VC++에서 HICON을 HBITMAP으로 변환하는 방법은 무엇입니까?
- 16. 이 충돌은 CString을
- 17. CString을 mfc로 플로트 변환
- 18. CString을 부호없는 long으로 변환
- 19. 암시 적 CString을 char *
- 20. MFC CString을 바꾸려면 어떻게해야합니까?
- 21. 링크 오류 CString을
- 22. 정수를 형식화 된 LPCWSTR로 변환하십시오. C++
- 23. .CATDrawing 파일을 .pdf로 변환하는 방법
- 24. CString을 문자열 (VC6)로 변환
- 25. OS X에서 cstring을 대체 하시겠습니까?
- 26. VC#
- 27. 변환하는 방법
- 28. vC++에서 crc16을 계산하는 방법
- 29. vC++에서 문자열을 분할하는 방법?
- 30. OpenGL을 VC++로 연결하는 방법
많은 복잡한 뒤집기 (및 잘못 된 잘못된) 답변 및 MFC에서 (변환 c'tors를 통해)이 작업을 수행하는 유일한 올바른 방법은 업보트를 얻지 못했습니까? – IInspectable