sprintf
Ser*_*sen 5
有2个版本。一种模板版本试图推断缓冲区的大小,另一种是传递大小的模板版本。
int sprintf_s<_Size>(char (&_Dest)[_Size], const char *_Format, ...)int sprintf_s(char * _DestBuf, size_t _SizeInBytes, const char *_Format, ...)如果不能推导出第一个,则必须自己传递大小
所以这:
char buf[100];sprintf_s(buf, "%d", 1);将实例化一个函数模板
sprintf_s<100>();这将产生一个编译器错误:
char *buf = new char[100];sprintf_s(buf, "%", 1);你必须使用另一个版本来编译它:
sprintf_s(buf, 100, "%d", 1);sprintf