std::string string_format(const char* format, ...)
{
#if 1 // 最大长度限制:1024 - 1
char buff[1024] = {0};
va_list args;
va_start(args, format);
vsprintf_s(buff, sizeof(buff), format, args);
va_end(args);
std::string str(buff);
return str;
#else // 无长度限制
va_list args;
va_start(args, format);
int count = vsnprintf(NULL, 0, format, args); // 使用vsnprintf:warning C4996; 使用vsnprintf_s:无法自动计算长度
va_end(args);
va_start(args, format);
char* buff = (char*)malloc(count * sizeof(wchar_t));
vsnprintf(buff, count, format, args);
va_end(args);
std::string str(buff, count);
free(buff);
return str;
#endif
}
<a target=_blank href="http://bbs.youkuaiyun.com/topics/240062127">参考</a>