문제

wchar []를 std :: cout에 넣어야합니다 ... 그것은 기본 Wi -Fi API 콜백에서 전달 된 pwlan_connection_notification_data의 일부입니다.

나는 단순히 std :: cout << var; 그러나 그것은 첫 번째 Char의 숫자 주소를 인쇄합니다. 비교 (var == L"some text")도 작동하지 않습니다. 디버거는 예상 값을 반환하지만 비교는 0을 반환합니다.이 배열을 표준 문자열 (std :: string)으로 어떻게 변환 할 수 있습니까?

미리 감사드립니다

도움이 되었습니까?

해결책

var가 a라고 가정합니다 wchar_t *, var == L"some text" 포인터 비교를합니다. VAR로 가리키는 문자열을 비교하려면 다음과 같은 기능을 사용하십시오. wcscmp.

다른 팁

일부 솔루션 :

  • 대신 std :: wcout에 쓰십시오
  • 전환하다:
    • std :: codecvt를 사용하는 표준 방식
    • Widechartomultibyte를 사용하는 Win32 방식

인쇄를 위해 cout, 당신은 사용해야합니다 std::wcout 대신에.

비교에 관해서는, 나는 당신이 무슨 뜻인지 잘 모르겠습니다.

  • 만약에 var a wchar_t[], 당신은 두 개의 포인터를 비교하고 있습니다. 문자열 내용은 동일 할 수 있지만 다른 메모리 위치에 물리적으로 할당되기 때문에 결과는 거짓 일 가능성이 높습니다. 대답은 같은 함수를 사용하는 것입니다 strcmp C 스타일 문자열 (char pointers)을 비교하거나 C ++ 문자열 클래스를 사용합니다.
  • 그리고 operator== 일반적으로 반환합니다 bool, 정수가 아닙니다. 그래서 돌아올 수 있습니다 false, 그러나 돌아올 수는 없습니다 0... 당신이 이상한 과부하를 직접 만들지 않았다면. (그리고 그것은 경우에만 가능합니다 var 사용자 정의 유형입니다.

다음을 사용하십시오

#ifdef UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top