c/c ++ (ms)에서 char []를 tchar []로 변환하는 가장 간단한 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/159442

  •  03-07-2019
  •  | 
  •  

문제

이것은 꽤 소프트볼 질문처럼 보이지만 Char와 TCHAR의 참조와 관련하여 많은 변형이있는 것처럼 보이기 때문에 항상이 기능을 찾는 데 어려움을 겪고 있습니다.

도움이 되었습니까?

해결책

MultibyteWideChar 그러나 또한 볼 수 있습니다 "MultibyteWidechar의 몇 가지 gotchas".

다른 팁

가장 간단한 방법은 변환 매크로를 사용하는 것입니다.

  • CW2A
  • CA2W
  • 등...

MSDN

TCHA는 Char 또는 WCHAR_T (넓은 문자)에 대한 Microsoft 특정 TypEdef입니다.

Char 로의 전환은 실제로 어떤 것이 있는지에 달려 있습니다. TCHA가 실제로 Char이라면 간단한 캐스트를 할 수 있지만 실제로 WCHAR_T라면 캐릭터 세트간에 변환하려면 루틴이 필요합니다. MultibyteWideChar () 함수 참조

이 게시물에는 몇 가지 답변이 있습니다. 특히 크로스 플랫폼 솔루션을 찾고 있다면 다음과 같습니다.

STL의 넓은 숯 변환에서 UTF8에서/에서

이 특별한 상황에서 나는 TCHA가 넓은 캐릭터라고 생각하지만, 그렇지 않은 경우에만 변환하기 만하면됩니다. 어떻게 든 확인해야합니다.

if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

그것에 대한 멋진 점은 평등의 크기입니다. 이는 상수이므로 컴파일러가 if ()를 처리하고 제거하고 동일하면 브레이스 내부의 모든 것을 제거합니다.

다음은 _tchar * argv []에게 char * argn []를 복제하는 CPP 코드입니다.

http://www.wincli.com/?p=72

Windows에 이전 코드를 채택하는 경우 Code에서 언급 한 Simple 사용 정의를 선택 사항으로 정의하십시오.

코드에 조건을 넣을 수 있습니다

ifdef _unicode

{// tchar가 넓은 char} else {// do do like tchar char}}

나는 이것이 오래된 실이라는 것을 알고 있지만, "올바른"대답을 얻지 못했기 때문에 지금 추가하고 있습니다.

이것이 지금 수행되는 것처럼 보이는 방식은 텍스트 매크로를 사용하는 것입니다. MSDN의 FindFirstFile의 예는 이것을 지적합니다.http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vss.85%29.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top