有一个格式说明符,总是意味着string与_tprintf?

当您使用TCHAR支持在Windows上构build应用程序时, _tprintf() %s表示Ansi构build的char *string,Unicode构build的wchar_t *表示反向。

但有没有任何格式说明符总是指char *string,无论它是一个Ansi或Unicode编译? 因为即使是在Windows上,UTF-16也没有真正用于文件或者networking,所以无论你编译你的应用程序的本地字符types如何,你都会想要处理基于字节的string。

Solutions Collecting From Web of "有一个格式说明符,总是意味着string与_tprintf?"

h修饰符强制将%s%s强制为char*l修饰符强制使用wchar_t* ,即: %hs%hS%ls%lS

这也可以解决你的问题:

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

你可以很容易地写这样的东西:

 #ifdef _UNICODE #define PF_ASCIISTR "%S"L #define PF_UNICODESTR "%s"L #else #define PF_ASCIISTR "%s" #define PF_UNICODESTR "%S" #endif 

然后在格式字符串中使用PF_ASCIISTRPF_UNICODESTR宏,利用C自动字符串字面连接:

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