是否有格式说明符始终表示使用_tprintf的字符串?

hip*_*ail 7 windows printf tchar format-specifiers

当您使用Windows上开发应用TCHAR的支持,%s_tprintf()手段char *建立串ANSI和wchar_t *为Unicode版本,同时%S意味着相反.

但是有没有格式说明符总是意味着char *字符串无论是Ansi还是Unicode构建?因为即使在Windows上,UTF-16并不真正用于文件或网络,但事实上你仍然需要处理基于字节的字符串,无论你编译应用程序的本地字符类型如何.

Rem*_*eau 5

h修改的力和%s%Schar*l修改势力既 wchar_t*,即:%hs,%hS,%ls,和%lS.

  • 什么"有点"是什么意思? (2认同)
  • 根据[这个有趣的页面](https://www.securecoding.cert.org/confluence/display/seccode/FIO47-C.+Use+valid+format+strings),%hs通常不是有效的修饰符,被认为是不安全的。我知道它适用于带有和不带有Unicode的MSVC,但是clang生成[-Wformat]警告,抱怨“长度修饰符'h'导致不确定的行为,或者对's'转换无效”。 (2认同)