当您使用TCHAR支持在
Windows上构建应用程序时,_tprintf()中的%s表示Ansi构建的char *字符串和Unicode构建的wchar_t *,而%S表示相反.
但是有没有格式说明符总是表示char * string,无论它是Ansi还是Unicode构建?因为即使在Windows上,UTF-16并不真正用于文件或网络,但事实上你仍然需要处理基于字节的字符串,无论你编译应用程序的本地字符类型如何.
h修饰符强制%s和%S强制为char *,l修饰符强制两者都为wchar_t *,即:%hs,%hS,%ls和%lS.