当您使用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,%l