2011-04-14 7 views
5
TCHAR TCHAR 지원을 사용하여 Windows에서 응용 프로그램을 빌드 할 때 _tprintf()%s는 Ansi 빌드의 char * 문자열을 의미하고 %S는 그 반대를 의미하는 유니 코드 빌드를위한 wchar_t *을 의미합니다.

항상 _tprintf가있는 char 문자열을 의미하는 형식 지정자가 있습니까?

그러나 Ansi 또는 Unicode 빌드에 상관없이 항상 char * 문자열을 의미하는 형식 지정자가 있습니까? Windows UTF-16에서도 파일이나 네트워킹에 실제로 사용되지 않기 때문에 앱을 컴파일 할 때 사용하는 기본 문자 유형에 관계없이 바이트 기반 문자열을 처리해야하는 경우가 많습니다.

답변

4

h 수정자가 %s%Schar*으로 설정하고 l 수정자는 모두 wchar_t* 즉, %hs, %hS, %ls%lS입니다.

+0

는 MSVC이 특정 있습니까? 방금 우분투 10에서 gcc의 경고를 보았습니다 :'경고 : ''타입 문자 'h'길이 수정 자 사용 ' – hippietrail

+0

아니요, MSVC에만 국한되지 않고 일부 컴파일러는'h'와'l'을 지원합니다 's' 타입의 수식어도 포함합니다. 나는 gcc가 그들 중 하나가 아닌 것 같다. –

+0

나는 gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2로 이것을 시도했다. – 18446744073709551615

0

쉽게 이런 식으로 뭔가를 쓸 수

_tprintf(_T("There are %d ") PF_ASCIISTR _T(" over the table"), 10, "pens"); 
1

이 또한 문제를 해결할 수 있습니다

_TCHAR *message; 
_tprintf(_T("\n>>>>>> %d") TEXT(" message is:%s\n"),4,message);