유니 코드 MFC 환경에서 ASCII와 함께 트레이스를 사용하는 방법은 무엇입니까?

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

문제

Windows CE에서 MFC 프로그램을 개발하고 있습니다. 기본적으로 유니 코드입니다. TRACE를 사용하여 이와 같은 메시지를 인쇄 할 수 있습니다.

TRACE(TEXT("Hey! we got a problem!\n"));

모든 것이 유니 코드라면 잘 작동합니다. 그러나 인쇄 할 ASCII 문자열이 있습니다. 예를 들어:

// open the serial port
m_Context = CreateFile(TEXT("COM1:"), ...);
int rc = ReadFile(m_Context, buffer, 1, cBytes, NULL);
// Oops!! We got a problem, because we can't print a non-unicode string
TRACE(TEXT("Read data: %s\n"), buffer);

GPS 모듈에서 COM1을 통해 문자열을 읽습니다. 이 "$ gpsgga, 1,2,3,4"와 같은 텍스트를 보냅니다. 그것들은 모두 ASCII로 인코딩됩니다. Trace로 인쇄하고 싶어요. 어떻게해야합니까?

감사.

도움이 되었습니까?

해결책

사용 "%hs" 코드 페이지를 신경 쓰지 않는 경우 좁은 문자열 인수를 형식화합니다. 예를 들어, 이 페이지 형식 지정자에 대한 설명.

다른 팁

Windows에서 "%s"형식 지정자 (Capital 's')는 빌드의 '반대'인 문자열을 형식화합니다. 유니 코드 빌드에서는 ANSI/MBCS 문자열이 예상되며 비 유니 코드 빌드에서는 유니 코드 인수가 예상됩니다.

이것이 CE에서 작동 할 것이라고 확신하지는 않지만 다음은 데스크탑에서 작동합니다 (유니 코드 빌드 용).

TRACE( TEXT("Unicode string: \"%s\", ASCII string: \"%S\""), L"unicode", "ascii");

검색된 텍스트가 실제로 0–127 범위의 ASCII이고 유니 코드 인코딩은 UTF-8이면 작동해야합니다. 유니 코드는 동일한 코드 포인트를 사용하여 낮은 ASCII 범위를 채택했습니다.

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